Integrated: 8341966: Broken annotated module may lead to an exception in javac
Jan Lahoda
jlahoda at openjdk.org
Thu Oct 17 09:29:16 UTC 2024
On Mon, 14 Oct 2024 05:35:39 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.
This pull request has now been integrated.
Changeset: 7ff4ea8d
Author: Jan Lahoda <jlahoda at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/7ff4ea8d01c681b90ad59be04007557d84c8db94
Stats: 94 lines in 2 files changed: 90 ins; 0 del; 4 mod
8341966: Broken annotated module may lead to an exception in javac
Reviewed-by: asotona
-------------
PR: https://git.openjdk.org/jdk/pull/21486
More information about the compiler-dev
mailing list