Sat, 14 Sep 2013 15:23:21 +0100
8024207: javac crash in Flow.AssignAnalyzer.visitIdent
Reviewed-by: jjg
1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Sep 12 22:40:29 2013 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java Sat Sep 14 15:23:21 2013 +0100 1.3 @@ -2546,7 +2546,7 @@ 1.4 @Override 1.5 Symbol access(Env<AttrContext> env, DiagnosticPosition pos, Symbol location, Symbol sym) { 1.6 if (sym.kind >= AMBIGUOUS) { 1.7 - if (sym.kind == HIDDEN) { 1.8 + if (sym.kind != WRONG_MTH && sym.kind != WRONG_MTHS) { 1.9 sym = super.access(env, pos, location, sym); 1.10 } else { 1.11 final JCDiagnostic details = sym.kind == WRONG_MTH ?
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/test/tools/javac/T8024207/FlowCrashTest.java Sat Sep 14 15:23:21 2013 +0100 2.3 @@ -0,0 +1,23 @@ 2.4 +/* 2.5 + * @test /nodynamiccopyright/ 2.6 + * @bug 8024207 2.7 + * @summary javac crash in Flow$AssignAnalyzer.visitIdent 2.8 + * @compile/fail/ref=FlowCrashTest.out -XDrawDiagnostics FlowCrashTest.java 2.9 + */ 2.10 + 2.11 +import java.util.*; 2.12 +import java.util.stream.*; 2.13 + 2.14 +public class FlowCrashTest { 2.15 + static class ViewId { } 2.16 + 2.17 + public void crash() { 2.18 + 2.19 + Map<ViewId,String> viewToProfile = null; 2.20 + new TreeMap<>(viewToProfile.entrySet().stream() 2.21 + .collect(Collectors.toMap((vid, prn) -> prn, 2.22 + (vid, prn) -> Arrays.asList(vid), 2.23 + (a, b) -> { a.addAll(b); return a; }))); 2.24 + 2.25 + } 2.26 +}
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/test/tools/javac/T8024207/FlowCrashTest.out Sat Sep 14 15:23:21 2013 +0100 3.3 @@ -0,0 +1,2 @@ 3.4 +FlowCrashTest.java:18:42: compiler.err.cant.apply.symbols: kindname.method, toMap, @475,@542,@624,{(compiler.misc.inapplicable.method: kindname.method, java.util.stream.Collectors, <T,K,U>toMap(java.util.function.Function<? super T,? extends K>,java.util.function.Function<? super T,? extends U>), (compiler.misc.infer.arg.length.mismatch: T,K,U)),(compiler.misc.inapplicable.method: kindname.method, java.util.stream.Collectors, <T,K,U>toMap(java.util.function.Function<? super T,? extends K>,java.util.function.Function<? super T,? extends U>,java.util.function.BinaryOperator<U>), (compiler.misc.infer.no.conforming.assignment.exists: T,K,U, (compiler.misc.incompatible.arg.types.in.lambda))),(compiler.misc.inapplicable.method: kindname.method, java.util.stream.Collectors, <T,K,U,M>toMap(java.util.function.Function<? super T,? extends K>,java.util.function.Function<? super T,? extends U>,java.util.function.BinaryOperator<U>,java.util.function.Supplier<M>), (compiler.misc.infer.arg.length.mismatch: T,K,U,M))} 3.5 +1 error