Let's have Javac to eat some good Italian food...
By Maurizio Cimadamore on Apr 09, 2008
I first met both Sun Microsystems and javac during an internship back in January 2003. The aim of this internship was to develop a prototype of Java compiler with runtime support for generic types called EGO (Exact Generic types On-demand). Since 2003 the EGO project has been subject to several changes and extensions; the biggest one is probably the inclusion of runtime support for wildcard types, as described in this article.
For those of you who are interested in what I'm doing during those first months at Sun, I can tell you that I have been quite deep into some bug-fixing work. In particular, I worked together with Alex Buckley (a big thank to Alex for his precious feedback) on several javac bugs involving the type-system area. Here's a brief list:
6559182: Cast from a raw type with non-generic supertype to a raw type fails unexpectedly
6657499: javac 1.6.0 fails to compile class with inner class
6450290: Capture of nested wildcards causes type error
6481655: Parser confused by combination of parens and explicit type args
6365166: javac (generic) unable to resolve methods
6531075: Missing synthetic casts when accessing fields/methods of intersection types including type variables
6531090: Cannot access methods/fields of a captured type belonging to an intersection type
6509042: javac rejects class literals in enum constructors
6569789: Compiler test lang/TYPE/type153/type15304/type15304.html fails since jdk7 b05
6663588: Compiler goes into infinite loop for Cyclic Inheritance test case
6608214: Exception throw while analysing a file with error
6660289: declared bound in inner class referring a type variable of the outer class
6611449: Internal Error thrown during generic method/constructor invocation
6614974: javac successfully compiles code that throws java.lang.VerifyError when run
My short-term plans are to keep fixing type-system bugs as well as improving javac diagnostics (especially those regarding wildcards). Yes, as you might have guessed, reification is still out of the roadmap... These are just my first steps: I cannot waste all my bullets at once!