The compiler now detects constructors calling each other in
never-ending cycles, classes that subclass their own member classes or
subclasses of their member classes, and classes that implement their
own member interfaces or subinterfaces of their member interfaces, or
interfaces that extend their own member interfaces or subinterfaces of
their member interfaces. Determination of member classes is now
according to the access rules of the Java Language Specification.
Code generation of private or protected constructors of inner classes
now works in all cases, and code generation for anonymous classes is
completely rewritten. Now only 7 of the 1607 jacks compiler test
suite tests fail, a record among all known Java compilers.
Inner class compilation no longer violates JVM access checks by generating accessor methods, dead code analysis improvements, improved handling of compile-time constants, improved resolution of methods and member class types, and only 34 failures are left on the Jacks test suite.