diff options
2 files changed, 26 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java index 2a09e1b7ec..bd8fd95364 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/FieldAccessTest.java @@ -794,6 +794,31 @@ public void testBug361039() { "f cannot be resolved or is not a field\n" + "----------\n"); } +public void testBug568959_001() { + if (this.complianceLevel < ClassFileConstants.JDK1_8) return; // lambda + runNegativeTest( + new String[] { + "X.java", + "public class X {\n"+ + " public void foo(Object o) {\n"+ + " I i = () -> {\n"+ + " while (o.eq) {\n"+ + " // nothing\n"+ + " }\n"+ + " };\n"+ + " }\n"+ + "}\n"+ + "interface I { \n"+ + " public abstract void run();\n"+ + "}" + }, + "----------\n" + + "1. ERROR in X.java (at line 4)\n" + + " while (o.eq) {\n" + + " ^^\n" + + "eq cannot be resolved or is not a field\n" + + "----------\n"); +} public static Class testClass() { return FieldAccessTest.class; } diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java index bf9d86975e..b1bf2cdf22 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java @@ -928,7 +928,7 @@ public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FieldBindi @Override public Constant optimizedBooleanConstant() { - if (this.binding.isValidBinding()) { + if (this.binding.isValidBinding() && this.resolvedType != null) { switch (this.resolvedType.id) { case T_boolean : case T_JavaLangBoolean : |