diff -r b7bfd64e43a6 -r 96b76dca2be8 src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Wed Sep 12 17:45:22 2018 -0700 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Mon Sep 10 16:59:41 2018 -0700 @@ -169,7 +169,7 @@ @Override public void setOverloadKind(OverloadKind overloadKind) { OverloadKind previous = t.getOverloadKind(); - if (previous == null) { + if (previous == null || previous == OverloadKind.ERROR) { t.setOverloadKind(overloadKind); } else { Assert.check(previous == overloadKind); @@ -1240,7 +1240,7 @@ Type descType = types.findDescriptorType(pt); List freeArgVars = inferenceContext.freeVarsIn(descType.getParameterTypes()); if (freeArgVars.nonEmpty() && - tree.getOverloadKind() == JCMemberReference.OverloadKind.OVERLOADED) { + tree.getOverloadKind() != JCMemberReference.OverloadKind.UNOVERLOADED) { stuckVars.addAll(freeArgVars); depVars.addAll(inferenceContext.freeVarsIn(descType.getReturnType())); } @@ -1305,7 +1305,7 @@ @Override public void visitReference(JCMemberReference tree) { super.visitReference(tree); - if (tree.getOverloadKind() == JCMemberReference.OverloadKind.OVERLOADED) { + if (tree.getOverloadKind() != JCMemberReference.OverloadKind.UNOVERLOADED) { stuck = true; } }