Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2018-04-22 14:03:28 +0000
committerStephan Herrmann2018-04-22 21:29:22 +0000
commit235a3d96bce67e31626ffca69b9b34eaacd105d9 (patch)
tree3790f881fe704a39b85819a67bc0d485fd93cd4f
parent5f9e19120475da127f861041f430cef1eacbf048 (diff)
downloadeclipse.jdt.core-235a3d96bce67e31626ffca69b9b34eaacd105d9.tar.gz
eclipse.jdt.core-235a3d96bce67e31626ffca69b9b34eaacd105d9.tar.xz
eclipse.jdt.core-235a3d96bce67e31626ffca69b9b34eaacd105d9.zip
Bug 533644 - JDK10: Incorrect Name clash errorI20180422-2000
-rw-r--r--org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_9.java49
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java16
2 files changed, 61 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_9.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_9.java
index 1054dd2bd4..51058691a2 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_9.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest_9.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 IBM Corporation.
+ * Copyright (c) 2016, 2018 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -620,6 +620,53 @@ public void testBug521815b() {
"The import a.b.X.Inner is never used\n" +
"----------\n");
}
+public void testBug533644() {
+ runConformTest(
+ new String[] {
+ "q/JobDetail.java",
+ "package q;\n" +
+ "import java.io.Serializable;\n" +
+ "public interface JobDetail extends Serializable, Cloneable { }\n",
+ "q/Scheduler.java",
+ "package q;\n" +
+ "import java.util.Map;\n" +
+ "import java.util.Set;\n" +
+ "public interface Scheduler {\n" +
+ " void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggersAndJobs, boolean replace) throws SchedulerException;\n" +
+ "}\n",
+ "q/SchedulerException.java",
+ "package q;\n" +
+ "public class SchedulerException extends Exception {\n" +
+ " private static final long serialVersionUID = 174841398690789156L;\n" +
+ "}\n",
+ "q/Trigger.java",
+ "package q;\n" +
+ "import java.io.Serializable;\n" +
+ "public interface Trigger extends Serializable, Cloneable, Comparable<Trigger> {\n" +
+ " public static final long serialVersionUID = -3904243490805975570L;\n" +
+ "}\n"
+ });
+ Runner runner = new Runner();
+ runner.shouldFlushOutputDirectory = false;
+ runner.testFiles = new String[] {
+ "ForwardingScheduler.java",
+ "import java.util.Map;\n" +
+ "import java.util.Set;\n" +
+ "\n" +
+ "import q.JobDetail;\n" +
+ "import q.Scheduler;\n" +
+ "import q.SchedulerException;\n" +
+ "import q.Trigger;\n" +
+ "\n" +
+ "public class ForwardingScheduler implements Scheduler {\n" +
+ " @Override\n" +
+ " public void scheduleJobs(Map<JobDetail, Set<? extends Trigger>> triggersAndJobs, boolean replace)\n" +
+ " throws SchedulerException {\n" +
+ " }\n" +
+ "}\n"
+ };
+ runner.runConformTest();
+}
public static Class<GenericsRegressionTest_9> testClass() {
return GenericsRegressionTest_9.class;
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
index 307e13a3e5..27e8107fb9 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
@@ -773,9 +773,19 @@ private PackageBinding computePackageFrom(char[][] constantPoolName, boolean isM
}
}
if (packageBinding instanceof SplitPackageBinding) {
- PackageBinding incarnation = ((SplitPackageBinding) packageBinding).getIncarnation(this.module);
- if (incarnation != null)
- packageBinding = incarnation;
+ PackageBinding candidate = null;
+ // select from incarnations the unique package containing CUs, if any:
+ for (PackageBinding incarnation : ((SplitPackageBinding) packageBinding).incarnations) {
+ if (incarnation.hasCompilationUnit(false)) {
+ if (candidate != null) {
+ candidate = null;
+ break; // likely to report "accessible from more than one module" downstream
+ }
+ candidate = incarnation;
+ }
+ }
+ if (candidate != null)
+ return candidate;
}
return packageBinding;
}

Back to the top