# HG changeset patch # User vromero # Date 1379168601 -3600 # Node ID d6d6e623f0b409acfe74fd0ea4669230a1ad4395 # Parent ab90fbc7b74e5dfd46101ec2408b34e64acc3ff8 8024207: javac crash in Flow.AssignAnalyzer.visitIdent Reviewed-by: jjg diff -r ab90fbc7b74e -r d6d6e623f0b4 langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Sep 12 22:40:29 2013 +0100 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Sat Sep 14 15:23:21 2013 +0100 @@ -2546,7 +2546,7 @@ @Override Symbol access(Env env, DiagnosticPosition pos, Symbol location, Symbol sym) { if (sym.kind >= AMBIGUOUS) { - if (sym.kind == HIDDEN) { + if (sym.kind != WRONG_MTH && sym.kind != WRONG_MTHS) { sym = super.access(env, pos, location, sym); } else { final JCDiagnostic details = sym.kind == WRONG_MTH ? diff -r ab90fbc7b74e -r d6d6e623f0b4 langtools/test/tools/javac/T8024207/FlowCrashTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T8024207/FlowCrashTest.java Sat Sep 14 15:23:21 2013 +0100 @@ -0,0 +1,23 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8024207 + * @summary javac crash in Flow$AssignAnalyzer.visitIdent + * @compile/fail/ref=FlowCrashTest.out -XDrawDiagnostics FlowCrashTest.java + */ + +import java.util.*; +import java.util.stream.*; + +public class FlowCrashTest { + static class ViewId { } + + public void crash() { + + Map viewToProfile = null; + new TreeMap<>(viewToProfile.entrySet().stream() + .collect(Collectors.toMap((vid, prn) -> prn, + (vid, prn) -> Arrays.asList(vid), + (a, b) -> { a.addAll(b); return a; }))); + + } +} diff -r ab90fbc7b74e -r d6d6e623f0b4 langtools/test/tools/javac/T8024207/FlowCrashTest.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T8024207/FlowCrashTest.out Sat Sep 14 15:23:21 2013 +0100 @@ -0,0 +1,2 @@ +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, toMap(java.util.function.Function,java.util.function.Function), (compiler.misc.infer.arg.length.mismatch: T,K,U)),(compiler.misc.inapplicable.method: kindname.method, java.util.stream.Collectors, toMap(java.util.function.Function,java.util.function.Function,java.util.function.BinaryOperator), (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, toMap(java.util.function.Function,java.util.function.Function,java.util.function.BinaryOperator,java.util.function.Supplier), (compiler.misc.infer.arg.length.mismatch: T,K,U,M))} +1 error