On Wed, 1 Nov 2023 19:14:22 GMT, Jim Laskey <[email protected]> wrote:
>> Address changes from JEP 445 to JEP 463.
>>
>> - Move from a SYNTHETIC unnamed class to a MANDATED implicit class.
>>
>> - Don't mark class on read.
>>
>> - Remove reflection and annotation processing related to unnamed classes.
>>
>> - Simplify main method search.
>
> Jim Laskey has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Remove obsolete tests
src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java line 249:
> 247: STRING_TEMPLATES(JDK21, Fragments.FeatureStringTemplates,
> DiagKind.PLURAL),
> 248: UNNAMED_CLASSES(JDK21, Fragments.FeatureUnnamedClasses,
> DiagKind.PLURAL),
> 249: IMPLICIT_CLASSES(JDK21, Fragments.FeatureImplicitClasses,
> DiagKind.PLURAL),
Should this be JDK22?
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java line 442:
> 440: Errors.ClassPublicShouldBeInFile(topElement,
> tree.name));
> 441: }
> 442: if ((tree.mods.flags & IMPLICIT_CLASS) != 0) {
I'm not 100% sure about this. Another option would be to tweak
Resolve::findType and make sure that `typeNotFound` (or some more specific
message!) is returned when an implicit class is referred to by name. If you
look at the first few lines in that method you will see:
if (name == names.empty)
return typeNotFound; // do not allow inadvertent "lookup" of
anonymous types
So, there's already some logic there for skipping some types.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16461#discussion_r1379942927
PR Review Comment: https://git.openjdk.org/jdk/pull/16461#discussion_r1379940717