all compiler-specific built-in stuff
CCompound is a workaround for initializers.
parsing types from declarations (top level declarations, parameters, etc)
bundles all environments during type checking
typing C expressions
CIgnore is a type for stuff we currently do not want to check it can be cast to anything and is not considered an error
struct and union are handled in the same construct but distinguished with a flag
Missing from used formalization:
checks an AST (from CParser) for type errors (especially dangling references)
checks an AST (from CParser) for type errors (especially dangling references)
hooks that other analysis can override to collect/cache their own information
helper functions
errors
zero is a special type for the constant 0 that is all: a function and an integer and a pointer
map from names to ASTs with their conditional types (or other conditional information)
maintains a map from names to types a name may be mapped to alternative types with different feature expressions
storing the following information per variable:
Options for the type system (what is supposed to be checked, what should issue errors or warnings)
Wrapper case class for IdentityHashMap as java's IdentityHashMap allows get(Anyref)
xml reader