7151070: NullPointerException in Resolve.isAccessible

Tue, 06 Mar 2012 16:48:29 +0000

author
mcimadamore
date
Tue, 06 Mar 2012 16:48:29 +0000
changeset 1221
c2234816495f
parent 1220
38ae13dcd215
child 1222
eaae5cf911be

7151070: NullPointerException in Resolve.isAccessible
Summary: Spurious accessibility check in TransTypes
Reviewed-by: jjg

src/share/classes/com/sun/tools/javac/comp/Resolve.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/comp/TransTypes.java file | annotate | diff | comparison | revisions
test/tools/javac/generics/7151070/T7151070.java file | annotate | diff | comparison | revisions
test/tools/javac/generics/7151070/T7151070.out file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Tue Mar 06 13:29:45 2012 +0000
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Tue Mar 06 16:48:29 2012 +0000
     1.3 @@ -2097,9 +2097,10 @@
     1.4   *  ResolveError classes, indicating error situations when accessing symbols
     1.5   ****************************************************************************/
     1.6  
     1.7 -    public void logAccessError(Env<AttrContext> env, JCTree tree, Type type) {
     1.8 -        AccessError error = new AccessError(env, type.getEnclosingType(), type.tsym);
     1.9 -        logResolveError(error, tree.pos(), type.getEnclosingType().tsym, type.getEnclosingType(), null, null, null);
    1.10 +    //used by TransTypes when checking target type of synthetic cast
    1.11 +    public void logAccessErrorInternal(Env<AttrContext> env, JCTree tree, Type type) {
    1.12 +        AccessError error = new AccessError(env, env.enclClass.type, type.tsym);
    1.13 +        logResolveError(error, tree.pos(), env.enclClass.sym, env.enclClass.type, null, null, null);
    1.14      }
    1.15      //where
    1.16      private void logResolveError(ResolveError error,
     2.1 --- a/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Tue Mar 06 13:29:45 2012 +0000
     2.2 +++ b/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Tue Mar 06 16:48:29 2012 +0000
     2.3 @@ -107,7 +107,7 @@
     2.4          make.at(tree.pos);
     2.5          if (!types.isSameType(tree.type, target)) {
     2.6              if (!resolve.isAccessible(env, target.tsym))
     2.7 -                resolve.logAccessError(env, tree, target);
     2.8 +                resolve.logAccessErrorInternal(env, tree, target);
     2.9              tree = make.TypeCast(make.Type(target), tree).setType(target);
    2.10          }
    2.11          make.pos = oldpos;
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/test/tools/javac/generics/7151070/T7151070.java	Tue Mar 06 16:48:29 2012 +0000
     3.3 @@ -0,0 +1,25 @@
     3.4 +/*
     3.5 + * @test /nodynamiccopyright/
     3.6 + * @bug     7151070
     3.7 + * @summary NullPointerException in Resolve.isAccessible
     3.8 + * @compile/fail/ref=T7151070.out -XDrawDiagnostics T7151070.java
     3.9 + */
    3.10 +
    3.11 +class T7151070a {
    3.12 +    private static class PrivateCls { }
    3.13 +    public static class PublicCls extends PrivateCls { }
    3.14 +
    3.15 +    public void m(PrivateCls p) { }
    3.16 +}
    3.17 +
    3.18 +class T7151070b {
    3.19 +    public void test(Test<T7151070a.PublicCls> obj, T7151070a outer) {
    3.20 +        outer.m(obj.get());
    3.21 +    }
    3.22 +
    3.23 +    public static class Test<T> {
    3.24 +        public T get() {
    3.25 +            return null;
    3.26 +        }
    3.27 +    }
    3.28 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/test/tools/javac/generics/7151070/T7151070.out	Tue Mar 06 16:48:29 2012 +0000
     4.3 @@ -0,0 +1,2 @@
     4.4 +T7151070.java:17:24: compiler.err.report.access: T7151070a.PrivateCls, private, T7151070a
     4.5 +1 error

mercurial