javac accepts enums, annotations and final classes being referenced by 'uses' statement
Georgiy Rakov
georgiy.rakov at oracle.com
Fri Apr 1 12:33:45 UTC 2016
Hello,
the issue is filed: https://bugs.openjdk.java.net/browse/JDK-8153268
Thanks,
Georgiy.
On 31.03.2016 18:10, Jonathan Gibbons wrote:
> Georgiy,
>
> Please file this as an issue against javac, and we'll take it from
> there. The case of the final class has previously been considered
> and considered "silly but not wrong", but the other two have not been
> explicitly considered.
>
> Alex has previously said in this forum that 'uses' and 'provides' are
> just a convenient front-end for the ServiceLoader API, so I would
> expect that to be taken into account when considering what should be
> accepted as legal here.
>
> -- Jon
>
> On 03/30/2016 04:18 AM, Georgiy Rakov wrote:
>> Hello,
>>
>> currently JDK9b111 javac successfully compiles following code:
>>
>> a/module-info.java:
>> module a {
>> uses pkg.FinalClassST;
>> uses pkg.EnumST;
>> uses pkg.AnnotationST;
>> }
>>
>> a/pkg/AnnotationST.java:
>> package pkg;
>> public @interface AnnotationST{}
>>
>> a/pkg/EnumST.java:
>> package pkg;
>> public enum EnumST {A,B}
>>
>> a/pkg/FinalClassST.java:
>> package pkg;
>> public final class FinalClassST{}
>>
>>
>> Could you please tell if this is javac, spec or both issue that type
>> being referenced by 'uses' statement is not checked at compile-time
>> for ability to be a service interface.
>>
>> The minimized testcase is attached; in order to run it please:
>> 1. unzip attached archive on Windows machine;
>> 2. rename test9\test_bat to test9\test.bat;
>> 3. modify test.bat by changing JDK_HOME variable to point to your JDK
>> installation;
>> 4. run test.bat.
>>
>> BTW: provided the type name references non existing type javac does
>> produce compile error.
>>
>> Thanks,
>> Georgiy.
>
More information about the jigsaw-dev
mailing list