Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Brychcy2019-07-09 18:43:22 +0000
committerTill Brychcy2019-07-10 07:39:16 +0000
commit3122a06e3a023df004c6d9fca731a8e0da4ab108 (patch)
tree0ffd10108ee1e163fbd47d3f862fa71c5a1556bf
parent32a3857797bf19248aee13ba9b4a02f63d66f233 (diff)
downloadeclipse.jdt.core-3122a06e3a023df004c6d9fca731a8e0da4ab108.tar.gz
eclipse.jdt.core-3122a06e3a023df004c6d9fca731a8e0da4ab108.tar.xz
eclipse.jdt.core-3122a06e3a023df004c6d9fca731a8e0da4ab108.zip
Bug 547181 - [9][impl] Reconsider representation and lookup of packagesS4_13_0_M1I20190711-1805I20190711-1120I20190711-0825I20190710-1800I20190710-0610
(SplitPackageBinding) - add test for fixed NPE problem because of IResource.getFileExtension() - avoid duplicate declared packages Change-Id: Ib41b0575734541805a8750dcc542397bfc3c52f2
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java29
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java2
2 files changed, 30 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java
index 897233965f..940fc1687e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ModuleBuilderTests.java
@@ -8778,6 +8778,35 @@ public class ModuleBuilderTests extends ModifyingResourceTests {
deleteProject(prjD);
}
}
+ public void testBug547181Comment104() throws CoreException {
+
+ IJavaProject prjA = createJava9Project("A");
+ IJavaProject prjB = createJava9Project("B");
+ try {
+ // NO module-info.java, so A is accessed as automatic module
+ createFolder("A/src/pack/a");
+
+ createFile("A/src/pack/_some_resource_without_extension",
+ "dummy content\n");
+
+ addModularProjectEntry(prjB, prjA);
+ // ---1---
+ createFolder("B/src/pack/b");
+ createFile("B/src/pack/b/Usage.java",
+ "package pack.b;\n" +
+ "public class Usage {\n" +
+ "}\n");
+ createFile("B/src/module-info.java",
+ "module B {\n" +
+ " requires A;\n" +
+ "}\n");
+ getWorkspace().build(IncrementalProjectBuilder.FULL_BUILD, null);
+ assertNoErrors();
+ } finally {
+ deleteProject(prjA);
+ deleteProject(prjB);
+ }
+ }
protected void assertNoErrors() throws CoreException {
for (IProject p : getWorkspace().getRoot().getProjects()) {
int maxSeverity = p.findMaxProblemSeverity(null, true, IResource.DEPTH_INFINITE);
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 c2a0884e19..071252f1e2 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
@@ -1097,7 +1097,7 @@ public PlainPackageBinding createPlainPackage(char[][] compoundName) {
} else {
packageBinding = getPackage0(compoundName[0]);
if (packageBinding == null || packageBinding == TheNotFoundPackage) {
- packageBinding = this.module.createDeclaredToplevelPackage(compoundName[0]);
+ packageBinding = this.module.getOrCreateDeclaredPackage(new char[][] {compoundName[0]});
if (this.useModuleSystem) {
char[][] declaringModuleNames = null;
if (this.module.isUnnamed()) {

Back to the top