Do package-infos need to be reset between annotation processing rounds?
Jonathan Gibbons
jonathan.gibbons at oracle.com
Wed Dec 6 00:46:35 UTC 2017
Liam,
What about the case where an annotation processor generates the
package-info.java file? Is that a case where it is important to reinit
the packge symbol correctly, so that the newly generated code is read?
-- Jon
On 12/05/2017 03:39 PM, Liam Miller-Cushon wrote:
> I have a question about the logic in JavacProcessingEnvironment's
> treeCleaner that resets package-info state between annotation
> processing rounds [1].
>
> JDK-8193037 describes an issue where package-infos loaded from the
> classpath are reset by treeCleaner. Those symbols doesn't get
> reinitialized correctly, and package annotations are not visible
> during subsequent annotation processing rounds.
>
> I wondered if the logic was only meant to apply to package-infos being
> compiled from source in the current compilation (similar to how
> module-infos are handle by treeCleaner), but I'm having trouble
> understanding when that logic is necessary. Commenting out
> `node.packge.package_info.reset();` and `node.packge.reset();` in
> treeCleaner doesn't break any jtreg tests. Does anyone have examples
> where that code is needed? I'd like to add a regression test to ensure
> the fix for JDK-8193037 doesn't interfere with the original purpose of
> that code.
>
> Thanks,
>
> [1]
> http://hg.openjdk.java.net/jdk/jdk/file/a358ebcfacfb/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java#l1518
More information about the compiler-dev
mailing list