RFR: 8341966: Broken annotated module may lead to an exception in javac [v2]

Adam Sotona asotona at openjdk.org
Wed Oct 16 15:08:15 UTC 2024


On Mon, 14 Oct 2024 06:01:49 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

>> Consider a `module-info.class`, that both:
>>  - is wrong, so it will produce a bad-classfile error, for example due to an illegal `requires transitive java.base;`
>>  - and the module is annotated
>> 
>> If the javac proceeds to resolve the annotations (which is not the default, but can be pushed to do it), it will crash with an `AssertionError` while trying to un-proxy the annotations. This is because there's an assert that `requestingOwner.owner.kind == MDL`, but since the module is erroneous, the kind is `ERR`, and the assert fails.
>> 
>> The proposal is to loosen the assert a bit, and require `requestingOwner.owner instanceof ModuleSymbol`. That should still be sufficiently strong, while permitting broken modules to be handled.
>
> Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Reflecting review feedback - using lambda instead of an anonymous innerclass.

Looks good to me.

-------------

Marked as reviewed by asotona (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/21486#pullrequestreview-2372799098


More information about the compiler-dev mailing list