8173456: com.sun.tools.javac.util.Assert.error during code compilation

Reviewed-by: mcimadamore
This commit is contained in:
Srikanth Adayapalam 2017-02-06 13:12:30 +05:30
parent 1ded7c8c04
commit 1b5251ab0c
3 changed files with 41 additions and 0 deletions

View File

@ -2947,6 +2947,14 @@ public class Attr extends JCTree.Visitor {
return;
}
if (!env.info.isSpeculative && that.getMode() == JCMemberReference.ReferenceMode.NEW) {
Type enclosingType = exprType.getEnclosingType();
if (enclosingType != null && enclosingType.hasTag(CLASS)) {
// Check for the existence of an apropriate outer instance
rs.resolveImplicitThis(that.pos(), env, exprType);
}
}
if (resultInfo.checkContext.deferredAttrContext().mode == AttrMode.CHECK) {
if (that.getMode() == ReferenceMode.INVOKE &&

View File

@ -0,0 +1,31 @@
/*
* @test /nodynamiccopyright/
* @bug 8173456
* @summary com.sun.tools.javac.util.Assert.error during code compilation
* @compile/fail/ref=MethodReferenceNoThisTest.out -XDrawDiagnostics MethodReferenceNoThisTest.java
*/
import java.util.function.Function;
abstract class MethodReferenceNoThisTest_Base {
protected MethodReferenceNoThisTest_Base(Function<MethodReferenceNoThisTest_Base, MethodReferenceNoThisTest_AV> x) {}
}
abstract class MethodReferenceNoThisTest_AV {
MethodReferenceNoThisTest_AV(MethodReferenceNoThisTest_Base b) {
}
}
public class MethodReferenceNoThisTest extends MethodReferenceNoThisTest_Base {
public MethodReferenceNoThisTest() {
super(V::new);
}
private class V extends MethodReferenceNoThisTest_AV {
V(MethodReferenceNoThisTest_Base b) {
super(b);
}
}
}

View File

@ -0,0 +1,2 @@
MethodReferenceNoThisTest.java:22:15: compiler.err.cant.ref.before.ctor.called: this
1 error