Initial proof of concept for implementation of -Xlint:hiddenclass
Fredrik Öhrström
fredrik.ohrstrom at oracle.com
Wed Sep 12 08:00:19 PDT 2012
Second round of implementation:
http://cr.openjdk.java.net/~ohrstrom/webrev-7153951-v2/
When building the openjdk, it outputs 316 warnings like these:
.../ClientHandshaker.java:723: warning: secondary class SupportedEllipticCurvesExtension in …./HelloExtensions.java should not be accessed from outside its own source file
//Fredrik
16 mar 2012 kl. 16:03 skrev Jonathan Gibbons:
> Fredrik,
>
> Good start.
>
> 1. It should be sufficient to remove references to the file manager and use something like
>
> c.sourcefile == env.toplevel.sourcefile
>
> to check if the class is in the "right" file.
>
> 2. I think line numbers are desirable, and would be easy if you move the checkForHiddenAccess from Resolve into Check, and call it from Attr.
>
> 3. I think a warning per reference is acceptable: it is not necessary to optimize it to a warning per hidden class.
>
> 4. We'll need a CCC approval for the new Xlint suboption.
>
> 5. We should check to see if there is a preferred term for what you call "hidden class".
>
> -- Jon
>
>
>
>
> On 03/16/2012 05:12 AM, Fredrik Öhrström wrote:
>> > From the bug:
>>
>> Although legal, the use of multiple top level classes in the same file
>> is somewhat questionable to begin with, but it is particularly bad when
>> in some package class A in A.java refers to class B defined in C.java.
>> This requires that at times the files must be compiled together, and
>> prevents implicit compilation from locating such "hidden classes".
>>
>> Proof of concept impl:
>> http://cr.openjdk.java.net/~ohrstrom/webrev-7153951-v1/
>>
>> It seems to detect the problem correctly. And there are a few of these
>> in the jdk, it seems, ~100.
>>
>> How to do isSameFile test properly?
>> How to report each hidden class reference only once?
>> Are line numbers neccesary?
>> Where to put checkForHiddenAccess?
>> Does it cover all possible use cases?
>> What else did I miss?
>>
>> //Fredrik
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20120912/c7b615f2/attachment.html
More information about the compiler-dev
mailing list