[−][src]Crate type_checking
This module implements type checking on the AST. The type checking
produces an instance of type_system::TypeSystem, which is later used by
the firm module for IR graph construction.
$ Types (builtin_types)
MiniJava suffers from the fact that its specification was stripped down
from the Java language report. A good example is the handling of the main
method's arguments: String[] args must not be used, and according to the
spec, String[] within the main method's parameter list is not a type.
However, it is possible for users to define a class String in MiniJava,
which ,in Java, would shadow the java.lang.String that is part of the
main method's parameter type. Not so in MiniJava - at least that's the
result of the discussion we had in the lecture.
To accomodate this and other spec quirks, we define built-in types using
$String or similar: Since a class definition beginning with $ is
rejected by the lexer, we can safely introduce such definitions during type
analysis for the built-in types.
Re-exports
pub use self::checker::check; |
Modules
| builtin_types | |
| checker | |
| method_body_type_checker | |
| semantics | |
| type_analysis | |
| type_system |