Changing annotation processing to use single Context for all rounds of annotation processing
Werner Dietl
wdietl at gmail.com
Wed Mar 12 22:27:50 UTC 2014
Hi Jan,
I just tried with webrev.03 and that exception during the Checker
Framework tests is fixed!
Thanks,
cu, WMD.
On Fri, Mar 7, 2014 at 11:03 AM, Jan Lahoda <jan.lahoda at oracle.com> wrote:
> Hi Werner,
>
> Thanks a lot for testing. I've tried to fix that, an updated version of the
> patch is available here:
> http://cr.openjdk.java.net/~jlahoda/2206926/webrev.02/
>
> Jan
>
>
> On 03/07/2014 09:10 AM, Werner Dietl wrote:
>>
>> Hi Jan,
>>
>> thanks for the heads-up!
>> The Checker Framework compiles with these changes, but there is one
>> unit test failure:
>>
>>
>> https://code.google.com/p/checker-framework/source/browse/checkers/tests/framework/UnimportedExtends2.java
>>
>> now fails with:
>>
>> [junit] Testcase:
>> run[framework/UnimportedExtends2](tests.FrameworkTest): Caused an
>> ERROR
>> [junit] null
>> [junit] java.lang.NullPointerException
>> [junit] at
>> com.sun.tools.javac.main.JavaCompiler.complete(JavaCompiler.java:795)
>> [junit] at
>> com.sun.tools.javac.processing.JavacProcessingEnvironment$ImplicitCompleter.complete(JavacProcessingEnvironment.java:1307)
>> [junit] at com.sun.tools.javac.code.Symbol.complete(Symbol.java:560)
>> [junit] at
>> com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1030)
>> [junit] at
>> com.sun.tools.javac.code.Type$ClassType.complete(Type.java:913)
>> [junit] at
>> com.sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.java:831)
>> [junit] at
>> com.sun.tools.javac.code.Printer.visitClassType(Printer.java:223)
>> [junit] at
>> com.sun.tools.javac.code.Printer.visitClassType(Printer.java:52)
>> [junit] at
>> com.sun.tools.javac.code.Type$ClassType.accept(Type.java:763)
>> [junit] at com.sun.tools.javac.code.Printer.visit(Printer.java:136)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:193)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:161)
>> [junit] at
>> com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
>> [junit] at
>> com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:179)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:161)
>> [junit] at
>> com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
>> [junit] at
>> com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMeta(BasicDiagnosticFormatter.java:184)
>> [junit] at
>> com.sun.tools.javac.util.BasicDiagnosticFormatter.formatDiagnostic(BasicDiagnosticFormatter.java:100)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.format(AbstractDiagnosticFormatter.java:117)
>> [junit] at
>> com.sun.tools.javac.util.AbstractDiagnosticFormatter.format(AbstractDiagnosticFormatter.java:69)
>> [junit] at
>> com.sun.tools.javac.util.JCDiagnostic.toString(JCDiagnostic.java:537)
>> [junit] at
>> com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.toString(ClientCodeWrapper.java:600)
>> [junit] at
>> checkers.util.test.CheckerTest.assertDiagnostics(CheckerTest.java:286)
>> [junit] at
>> checkers.util.test.CheckerTest.checkTestResult(CheckerTest.java:200)
>> [junit] at
>> checkers.util.test.CheckerTest.runTest(CheckerTest.java:134)
>> [junit] at checkers.util.test.CheckerTest.test(CheckerTest.java:65)
>> [junit] at
>> checkers.util.test.ParameterizedCheckerTest.run(ParameterizedCheckerTest.java:25)
>>
>> (Note that I applied your patch against jsr308-langtools, so some of
>> these line numbers might be off. JavaCompiler.java is unchanged.)
>>
>> I didn't see a performance difference when running the unit tests.
>>
>> Best regards,
>> cu, WMD.
>>
>> On Thu, Mar 6, 2014 at 4:22 PM, Jan Lahoda <jan.lahoda at oracle.com> wrote:
>>>
>>> Hi Werner and others,
>>>
>>> Currently, most of javac's services and data get cleared between
>>> annotation
>>> processing rounds. Lately, I've been working on a patch that would allow
>>> to
>>> keep as much as possible across rounds. The advantages include faster
>>> compilation (as ClassSymbols from classpath don't need to be read again
>>> and
>>> again for each annotation processing round) and cleaner javac internals.
>>>
>>> My current patch is available here:
>>> http://cr.openjdk.java.net/~jlahoda/2206926/webrev.01/
>>>
>>> The patch should be applicable to current jdk9/dev/langtools and current
>>> type-annotations/langtools.
>>>
>>> Any comments on the patch, or practical experiences running the Checker
>>> Framework (or any other annotation processor/framework) on a javac with
>>> this
>>> patch are very welcome and would be greatly appreciated.
>>>
>>> Thanks,
>>> Jan
>>
>>
>>
>>
>
--
http://www.google.com/profiles/wdietl
More information about the type-annotations-dev
mailing list