diff options
author | Stephan Herrmann | 2019-12-10 21:37:17 +0000 |
---|---|---|
committer | Stephan Herrmann | 2019-12-14 12:56:21 +0000 |
commit | 5255d6d0ba1ee74633a638e1aa2cf4d5175d5dc2 (patch) | |
tree | 871164d12c9ed9b148facc79b3e0f51f086dde3a | |
parent | 5db0d28d69c3e92cc9fd2bca1e43b9368d92c855 (diff) | |
download | eclipse.jdt.core-5255d6d0ba1ee74633a638e1aa2cf4d5175d5dc2.tar.gz eclipse.jdt.core-5255d6d0ba1ee74633a638e1aa2cf4d5175d5dc2.tar.xz eclipse.jdt.core-5255d6d0ba1ee74633a638e1aa2cf4d5175d5dc2.zip |
Bug 534223 - Getting "Inconsistent classfile encountered: The undefined
type parameter K is referenced "
Also:
- update of service versions
- remove unused API filters
- resolve warnings in o.e.j.core.tests.compiler
Change-Id: If9930422a5914308ce789684b013f3b2264b4a80
8 files changed, 58 insertions, 120 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.tests.compiler/META-INF/MANIFEST.MF index 06473e3aaf..acfe834834 100644 --- a/org.eclipse.jdt.core.tests.compiler/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core.tests.compiler/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.core.tests.compiler;singleton:=true -Bundle-Version: 3.12.1000.qualifier +Bundle-Version: 3.12.1100.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.jdt.core.tests.compiler, diff --git a/org.eclipse.jdt.core.tests.compiler/pom.xml b/org.eclipse.jdt.core.tests.compiler/pom.xml index a674c791e3..db6c9351e9 100644 --- a/org.eclipse.jdt.core.tests.compiler/pom.xml +++ b/org.eclipse.jdt.core.tests.compiler/pom.xml @@ -20,7 +20,7 @@ </parent> <groupId>org.eclipse.jdt</groupId> <artifactId>org.eclipse.jdt.core.tests.compiler</artifactId> - <version>3.12.1000-SNAPSHOT</version> + <version>3.12.1100-SNAPSHOT</version> <packaging>eclipse-test-plugin</packaging> <properties> diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java index f1d67a2706..6dad28ad78 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java @@ -52817,7 +52817,7 @@ protected static class Duration implements Comparable<Duration> { @Override public String toString() { - return "#"+index + " " + durationMs + "ms" + (isExcluded?" (excluded)":""); + return "#"+this.index + " " + this.durationMs + "ms" + (this.isExcluded?" (excluded)":""); } } 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 fcf06d9d42..65a561804a 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 @@ -10006,4 +10006,39 @@ public void testBug508834_comment0() { "The method define(FuncN, TODO[]) is ambiguous for the type Test\n" + "----------\n"); } + + public void testBug534223() { + Runner runner = new Runner(); + String sourceX = + "package p;\n" + + "public class X {\n" + + " <S> void m() {\n" + + " Runnable r = () -> {\n" + + " IFC<S> i = new IFC<S>() {\n" + + " public void n(S s) {}\n" + + " };\n" + + " if (i != null)\n" + + " System.out.println(i);\n" + + " };\n" + + " r.run();\n" + + " }\n" + + "}\n"; + runner.testFiles = new String[] { + "p/IFC.java", + "package p;\n" + + "public interface IFC<T> {\n" + + " void n(T t);\n" + + "}\n", + "p/X.java", + sourceX + }; + runner.runConformTest(); + runner.shouldFlushOutputDirectory = false; + runner.testFiles = new String[] { + "p/X.java", + sourceX + }; + runner.runConformTest(); // don't use pre-compiled p/X$1.class + } + } diff --git a/org.eclipse.jdt.core/.settings/.api_filters b/org.eclipse.jdt.core/.settings/.api_filters deleted file mode 100644 index f5f3fac15f..0000000000 --- a/org.eclipse.jdt.core/.settings/.api_filters +++ /dev/null @@ -1,106 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<component id="org.eclipse.jdt.core" version="2"> - <resource path="compiler/org/eclipse/jdt/core/compiler/CategorizedProblem.java" type="org.eclipse.jdt.core.compiler.CategorizedProblem"> - <filter comment="PREVIEW RELATED" id="336658481"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.compiler.CategorizedProblem"/> - <message_argument value="CAT_PREVIEW_RELATED"/> - </message_arguments> - </filter> - </resource> - <resource path="compiler/org/eclipse/jdt/core/compiler/IProblem.java" type="org.eclipse.jdt.core.compiler.IProblem"> - <filter comment="BETA_JAVA13 addition of preview related base" id="388194388"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.compiler.IProblem"/> - <message_argument value="IgnoreCategoriesMask"/> - <message_argument value="4194303"/> - </message_arguments> - </filter> - </resource> - <resource path="dom/org/eclipse/jdt/core/dom/ASTVisitor.java" type="org.eclipse.jdt.core.dom.ASTVisitor"> - <filter comment="Not required as it is a part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.ASTVisitor"/> - <message_argument value="visit(SwitchExpression)"/> - </message_arguments> - </filter> - </resource> - <resource path="dom/org/eclipse/jdt/core/dom/BreakStatement.java" type="org.eclipse.jdt.core.dom.BreakStatement"> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.BreakStatement"/> - <message_argument value="getExpression()"/> - </message_arguments> - </filter> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.BreakStatement"/> - <message_argument value="isImplicit()"/> - </message_arguments> - </filter> - <filter comment="preview feature - transient" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.BreakStatement"/> - <message_argument value="propertyDescriptors(int, boolean)"/> - </message_arguments> - </filter> - <filter comment="Not valid for Java 13" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.BreakStatement"/> - <message_argument value="setExpression(Expression)"/> - </message_arguments> - </filter> - </resource> - <resource path="dom/org/eclipse/jdt/core/dom/SwitchCase.java" type="org.eclipse.jdt.core.dom.SwitchCase"> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchCase"/> - <message_argument value="expressions()"/> - </message_arguments> - </filter> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchCase"/> - <message_argument value="isSwitchLabeledRule()"/> - </message_arguments> - </filter> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchCase"/> - <message_argument value="setSwitchLabeledRule(boolean)"/> - </message_arguments> - </filter> - </resource> - <resource path="dom/org/eclipse/jdt/core/dom/SwitchExpression.java" type="org.eclipse.jdt.core.dom.SwitchExpression"> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchExpression"/> - <message_argument value="getExpression()"/> - </message_arguments> - </filter> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchExpression"/> - <message_argument value="propertyDescriptors(int)"/> - </message_arguments> - </filter> - <filter comment="preview feature - transient" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchExpression"/> - <message_argument value="propertyDescriptors(int, boolean)"/> - </message_arguments> - </filter> - <filter comment="No more an API as part of preview feature" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchExpression"/> - <message_argument value="setExpression(Expression)"/> - </message_arguments> - </filter> - <filter comment="Only for Java 13" id="338944126"> - <message_arguments> - <message_argument value="org.eclipse.jdt.core.dom.SwitchExpression"/> - <message_argument value="statements()"/> - </message_arguments> - </filter> - </resource> -</component> diff --git a/org.eclipse.jdt.core/META-INF/MANIFEST.MF b/org.eclipse.jdt.core/META-INF/MANIFEST.MF index c3a0b03eee..594a60d7c3 100644 --- a/org.eclipse.jdt.core/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.core; singleton:=true -Bundle-Version: 3.20.0.qualifier +Bundle-Version: 3.20.100.qualifier Bundle-Activator: org.eclipse.jdt.core.JavaCore Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java index 578d000f53..9835a4607f 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ClassFile.java @@ -5960,24 +5960,33 @@ public class ClassFile implements TypeConstants, TypeIds { private TypeBinding getNewTypeBinding(char[] typeConstantPoolName, Scope scope) { char[] typeName = typeConstantPoolName; + if (isLikelyLocalTypeName(typeName)) { + // find local type in innerClassesBindings: + Set<TypeBinding> innerTypeBindings = this.innerClassesBindings.keySet(); + for (TypeBinding binding : innerTypeBindings) { + if (CharOperation.equals(binding.constantPoolName(), typeName)) + return binding; + } + } TypeBinding type = (TypeBinding) scope.getTypeOrPackage(CharOperation.splitOn('/', typeName)); if (!type.isValidBinding()) { ProblemReferenceBinding problemReferenceBinding = (ProblemReferenceBinding) type; if ((problemReferenceBinding.problemId() & ProblemReasons.InternalNameProvided) != 0) { type = problemReferenceBinding.closestMatch(); - } else if ((problemReferenceBinding.problemId() & ProblemReasons.NotFound) != 0 && this.innerClassesBindings != null) { - // check local inner types to see if this is a anonymous type - Set<TypeBinding> innerTypeBindings = this.innerClassesBindings.keySet(); - for (TypeBinding binding : innerTypeBindings) { - if (CharOperation.equals(binding.constantPoolName(), typeName)) { - type = binding; - break; - } - } } } return type; } + + private boolean isLikelyLocalTypeName(char[] typeName) { + int dollarPos = CharOperation.lastIndexOf('$', typeName); + while (dollarPos != -1) { + if (Character.isDigit(typeName[dollarPos+1])) + return true; // name segment starts with a digit => likely a local type (but still "$0" etc. could be part of the source name) + dollarPos = CharOperation.lastIndexOf('$', typeName, 0, dollarPos-1); + } + return false; + } private TypeBinding getANewArrayTypeBinding(char[] typeConstantPoolName, Scope scope) { if (typeConstantPoolName[0] == '[') { diff --git a/org.eclipse.jdt.core/pom.xml b/org.eclipse.jdt.core/pom.xml index 072033f2fb..7180de1a4c 100644 --- a/org.eclipse.jdt.core/pom.xml +++ b/org.eclipse.jdt.core/pom.xml @@ -18,7 +18,7 @@ </parent> <groupId>org.eclipse.jdt</groupId> <artifactId>org.eclipse.jdt.core</artifactId> - <version>3.20.0-SNAPSHOT</version> + <version>3.20.100-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> <properties> |