Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2018-10-30 19:02:12 +0000
committerStephan Herrmann2018-10-30 20:18:41 +0000
commit1d1468f56bf9e54149c9b9759e0d4e70fd0d999b (patch)
tree6c714f6e799e204b7d307e79987f455775d62128
parent6504b5e1cf9b5fc5fc315e8c943599e1d162a6f3 (diff)
downloadeclipse.jdt.core-I20181031-0540.tar.gz
eclipse.jdt.core-I20181031-0540.tar.xz
eclipse.jdt.core-I20181031-0540.zip
Bug 540631 - [1.8] wrong classification of name in name::newI20181031-1800I20181031-0550I20181031-0540
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java2
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java34
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java4
3 files changed, 36 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
index e20a31370b..120b628ff5 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_1_8.java
@@ -5536,7 +5536,7 @@ public void testBug470542() {
"1. ERROR in X.java (at line 5)\n" +
" process(missing::new);\n" +
" ^^^^^^^\n" +
- "missing cannot be resolved\n" +
+ "missing cannot be resolved to a type\n" +
"----------\n");
}
public void testBug471280_comment0() {
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java
index 2ab5c9ea6b..da0ddf9b4a 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java
@@ -1277,8 +1277,8 @@ public void test045() {
"----------\n" +
"5. ERROR in X.java (at line 15)\n" +
" i = X.Y::new;\n" +
- " ^\n" +
- "Y cannot be resolved or is not a field\n" +
+ " ^^^\n" +
+ "X.Y cannot be resolved to a type\n" +
"----------\n" +
"6. ERROR in X.java (at line 27)\n" +
" new X().new Y().f();\n" +
@@ -7065,7 +7065,35 @@ public void testBug540520() {
"}\n"
};
runner.runConformTest();
-
+}
+public void testBug540631() {
+ Runner runner = new Runner();
+ runner.testFiles = new String[] {
+ "EclipseCompileBug.java",
+ "public enum EclipseCompileBug {\n" +
+ " /*\n" +
+ " * Next line fails with these errors in Eclipse, works with javac:\n" +
+ " * <li>Test cannot be resolved to a type\n" +
+ " * <li>Cannot reference a field before it is defined\n" +
+ " */\n" +
+ " Test(Test::new);\n" +
+ "\n" +
+ " @FunctionalInterface\n" +
+ " public interface IConstructor<T extends Object> {\n" +
+ " T apply();\n" +
+ " }\n" +
+ "\n" +
+ " private final IConstructor<?> constructor;\n" +
+ " private EclipseCompileBug (IConstructor<?> newObj) {\n" +
+ " constructor = newObj;\n" +
+ " }\n" +
+ " \n" +
+ " public static class Test {\n" +
+ " \n" +
+ " }\n" +
+ "}\n"
+ };
+ runner.runConformTest();
}
public static Class testClass() {
return LambdaExpressionsTest.class;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
index e7849ee0fa..885fc4cc3a 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java
@@ -58,6 +58,7 @@ import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
import org.eclipse.jdt.internal.compiler.lookup.ClassScope;
import org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
import org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
import org.eclipse.jdt.internal.compiler.lookup.TypeIds;
import org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
@@ -8724,6 +8725,9 @@ protected void consumeReferenceExpressionTypeForm(boolean isPrimitive) { // actu
} else {
referenceExpression.initialize(this.compilationUnit.compilationResult, getUnspecifiedReference(), typeArguments, selector, sourceEnd);
}
+ if (CharOperation.equals(selector, TypeConstants.INIT) && referenceExpression.lhs instanceof NameReference) {
+ referenceExpression.lhs.bits &= ~Binding.VARIABLE;
+ }
consumeReferenceExpression(referenceExpression);
}
protected void consumeReferenceExpressionPrimaryForm() {

Back to the top