diff options
author | Till Brychcy | 2019-07-09 18:43:22 +0000 |
---|---|---|
committer | Till Brychcy | 2019-07-10 07:39:16 +0000 |
commit | 3122a06e3a023df004c6d9fca731a8e0da4ab108 (patch) | |
tree | 0ffd10108ee1e163fbd47d3f862fa71c5a1556bf | |
parent | 32a3857797bf19248aee13ba9b4a02f63d66f233 (diff) | |
download | eclipse.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
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()) { |