Initial proof of concept for implementation of -Xlint:hiddenclass
Jonathan Gibbons
jonathan.gibbons at oracle.com
Fri Mar 16 08:03:00 PDT 2012
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
>
More information about the compiler-dev
mailing list