Mon, 17 Oct 2011 19:07:26 -0700
Merge
1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Thu Oct 13 10:35:50 2011 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Mon Oct 17 19:07:26 2011 -0700 1.3 @@ -1169,12 +1169,17 @@ 1.4 if (lint.isEnabled(LintCategory.RAW) && 1.5 tree.type.tag == CLASS && 1.6 !TreeInfo.isDiamond(tree) && 1.7 - !env.enclClass.name.isEmpty() && //anonymous or intersection 1.8 + !withinAnonConstr(env) && 1.9 tree.type.isRaw()) { 1.10 log.warning(LintCategory.RAW, 1.11 tree.pos(), "raw.class.use", tree.type, tree.type.tsym.type); 1.12 } 1.13 } 1.14 + 1.15 + boolean withinAnonConstr(Env<AttrContext> env) { 1.16 + return env.enclClass.name.isEmpty() && 1.17 + env.enclMethod != null && env.enclMethod.name == names.init; 1.18 + } 1.19 } 1.20 1.21 /* *************************************************************************
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/test/tools/javac/warnings/7090499/T7090499.java Mon Oct 17 19:07:26 2011 -0700 2.3 @@ -0,0 +1,37 @@ 2.4 +/** 2.5 + * @test /nodynamiccopyright/ 2.6 + * @bug 7094099 2.7 + * @summary -Xlint:rawtypes 2.8 + * @compile/fail/ref=T7090499.out -XDrawDiagnostics -Xlint:rawtypes T7090499.java 2.9 + */ 2.10 + 2.11 + 2.12 +class T7090499<E> { 2.13 + 2.14 + static class B<X> {} 2.15 + 2.16 + class A<X> { 2.17 + class X {} 2.18 + class Z<Y> {} 2.19 + } 2.20 + 2.21 + T7090499 t = new T7090499() { //raw warning (2) 2.22 + 2.23 + A.X x1;//raw warning 2.24 + A.Z z1;//raw warning 2.25 + 2.26 + T7090499.B<Integer> b1;//ok 2.27 + T7090499.B b2;//raw warning 2.28 + 2.29 + A<String>.X x2;//ok 2.30 + A<String>.Z<Integer> z2;//ok 2.31 + A<B>.Z<A<B>> z3;//raw warning (2) 2.32 + 2.33 + void test(Object arg1, B arg2) {//raw warning 2.34 + boolean b = arg1 instanceof A;//ok 2.35 + Object a = (A)arg1;//ok 2.36 + A a2 = new A() {};//raw warning (2) 2.37 + a2.new Z() {};//raw warning 2.38 + } 2.39 + }; 2.40 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/test/tools/javac/warnings/7090499/T7090499.out Mon Oct 17 19:07:26 2011 -0700 3.3 @@ -0,0 +1,17 @@ 3.4 +T7090499.java:18:5: compiler.warn.raw.class.use: T7090499, T7090499<E> 3.5 +T7090499.java:18:22: compiler.warn.raw.class.use: T7090499, T7090499<E> 3.6 +T7090499.java:20:10: compiler.warn.raw.class.use: T7090499.A.X, T7090499<E>.A<X>.X 3.7 +T7090499.java:21:10: compiler.warn.raw.class.use: T7090499.A.Z, T7090499<E>.A<X>.Z<Y> 3.8 +T7090499.java:24:17: compiler.warn.raw.class.use: T7090499.B, T7090499.B<X> 3.9 +T7090499.java:26:10: compiler.err.improperly.formed.type.inner.raw.param 3.10 +T7090499.java:27:10: compiler.err.improperly.formed.type.inner.raw.param 3.11 +T7090499.java:28:18: compiler.warn.raw.class.use: T7090499.B, T7090499.B<X> 3.12 +T7090499.java:28:17: compiler.err.improperly.formed.type.inner.raw.param 3.13 +T7090499.java:28:11: compiler.warn.raw.class.use: T7090499.B, T7090499.B<X> 3.14 +T7090499.java:28:10: compiler.err.improperly.formed.type.inner.raw.param 3.15 +T7090499.java:30:32: compiler.warn.raw.class.use: T7090499.B, T7090499.B<X> 3.16 +T7090499.java:33:13: compiler.warn.raw.class.use: T7090499.A, T7090499<E>.A<X> 3.17 +T7090499.java:33:24: compiler.warn.raw.class.use: T7090499.A, T7090499<E>.A<X> 3.18 +T7090499.java:34:20: compiler.warn.raw.class.use: T7090499.A.Z, T7090499<E>.A<X>.Z<Y> 3.19 +4 errors 3.20 +11 warnings