JDK-6972747 : CheckExamples fail when assertions are enabled
  • Type: Bug
  • Component: tools
  • Sub-Component: javac
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: unknown
  • Submitted: 2010-07-28
  • Updated: 2011-05-18
  • Resolved: 2011-05-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7
7 b105Fixed
Related Reports
Relates :  
Description
When compiler regression test are run with assertion enabled, the recently added test CheckExamples fails with 58 errors. Here's the output:

Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountError.java declares key compiler.err.unreported.exception.need.to.catch.or.throw but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountError.java declares key compiler.misc.count.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountErrorPlural.java declares key compiler.err.unreported.exception.need.to.catch.or.throw but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountErrorPlural.java declares key compiler.misc.count.error.plural but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarn.java declares key compiler.misc.count.warn but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarn.java declares key compiler.misc.unchecked.assign but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarn.java declares key compiler.warn.lintOption but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarn.java declares key compiler.warn.prob.found.req but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarn.java declares key compiler.warn.warning but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarnPlural.java declares key compiler.misc.count.warn.plural but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarnPlural.java declares key compiler.misc.unchecked.assign but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarnPlural.java declares key compiler.warn.lintOption but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarnPlural.java declares key compiler.warn.prob.found.req but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/CountWarnPlural.java declares key compiler.warn.warning but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.err.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.err.warnings.and.werror but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.misc.count.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.misc.count.warn but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.misc.kindname.interface but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.misc.where.description.typevar but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.misc.where.typevar but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.warn.lintOption but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.warn.raw.class.use but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Error.java declares key compiler.warn.warning but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/IdentifierExpected.java declares key compiler.err.expected but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/IdentifierExpected.java declares key compiler.err.invalid.binary.number but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/IdentifierExpected.java declares key compiler.misc.count.error.plural but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/IdentifierExpected.java declares key compiler.misc.token.identifier but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameClass.java declares key compiler.err.cant.resolve.location but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameClass.java declares key compiler.misc.count.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameClass.java declares key compiler.misc.kindname.class but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameConstructor.java declares key compiler.err.cant.apply.symbol but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameConstructor.java declares key compiler.misc.count.error.plural but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameConstructor.java declares key compiler.misc.kindname.class but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameConstructor.java declares key compiler.misc.kindname.constructor but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameConstructor.java declares key compiler.misc.no.args but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameMethod.java declares key compiler.err.cant.resolve.location.args but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameMethod.java declares key compiler.misc.count.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameMethod.java declares key compiler.misc.kindname.class but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameMethod.java declares key compiler.misc.kindname.method but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameVariable.java declares key compiler.err.cant.resolve.location but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameVariable.java declares key compiler.misc.count.error but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameVariable.java declares key compiler.misc.kindname.class but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/KindnameVariable.java declares key compiler.misc.kindname.variable but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/NoJavaLang.java declares key compiler.misc.fatal.err.no.java.lang but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Note.java declares key compiler.note.note but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Note.java declares key compiler.note.unchecked.filename but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Note.java declares key compiler.note.unchecked.recompile but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/PrintProcessorInfo declares key compiler.misc.x.print.processor.info but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/PrintRounds declares key compiler.misc.x.print.rounds but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.checking.attribution but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.classpath but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.loading but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.parsing.done but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.parsing.started but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.sourcepath but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.total but does not generate it
Error: Example /home/maurizio/Documents/ws/jdk7/6938454/test/tools/javac/diags/examples/Verbose.java declares key compiler.misc.verbose.wrote.file but does not generate it
310 examples checked
115 keys on not-yet list

Comments
SUGGESTED FIX A webrev of this fix is available at the following URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e79e8efe1b3e
29-07-2010

EVALUATION The problem is caused by an unexpected assertion error thrown when using the so-called backdoor compiler. This kind of mode registers a factory for a modified version (subclass) of JavacMessages - unfortunately, the factory creates the instance using the wrong constructor (no-arg constrcutor instead of the one accepting a 'Context'). This causes the instance of JavacMessage not to be registered in the context, hence the assertion failure.
28-07-2010