determines whether types are compatible in assignements etc
determines whether types are compatible in assignements etc
for "a=b;" with a:type1 and b:type2
returns None if there is an error, Some("") if it passes and Some(msg) if there is a warning
ansi c conversion rules of two arithmetic types (if called on other types, it just returns the first type; hence the pattern if cocerce(x,y) return converse(x,y) should yield the default behavior )
ansi c conversion rules of two arithmetic types (if called on other types, it just returns the first type; hence the pattern if cocerce(x,y) return converse(x,y) should yield the default behavior )
default is int. if either operand has a higher priority, it is preferred over int
according to specification: http://techpubs.sgi.com/library/manuals/0000/007-0701-150/pdf/007-0701-150.pdf
are both types char but with different signage?
are both types char but with different signage?
we can report as a warning if both types are number, but they are not the same width or signed
normalize types for internal comparison in coerce (do not return this to the outside)
normalize types for internal comparison in coerce (do not return this to the outside)
* function -> pointer to function
* pointer to pointer to function -> pointer to function
* remove any CObj within the type
* regard arrays as pointers
* pointer to ignore equals ignore
* CVoid in function parameters is removed
promotion is what happens internally during conversion
helper functions