Java type analysis is complex, but it is based upon a number of language-independent concepts. Eli type analysis modules encapsulate the necessary computations and the dependence relationships among them, and export a nomenclature for language constructs. Type analyzer code for Java can be created by instantiating the modules and then classifying Java constructs according to that nomenclature.
Section 5.1 defines the Java type model, and the necessary type denotations and type identifiers are implemented in Section 5.2. Identifiers representing typed entities (fields, variables, and parameters) are established in Section 5.3.
Language-defined operators and the mechanisms for creating methods are defined in Section 5.4. The chapter concludes with definitions of type relationships in expressions (Section 5.6) and statements (Section 5.5).
The process described in this chapter associates a type with every construct yielding a value and every identifier representing a type or typed entity. It relies not only on computations in the abstract syntax tree, but also on properties stored in the definition table.