Bug 538086 - [9] Java rejects java.* import but ECJ doesn't
Change-Id: I4a4def027ac5266a4e015fb866a20b557b6098bf
Signed-off-by: Jay Arthanareeswaran <jarthana@in.ibm.com>
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 81d316f..77d997e 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
@@ -4967,10 +4967,10 @@
getWorkingCopy("/Test/src/X.java", src, true);
assertProblems("should have not problems",
"----------\n" +
- "1. WARNING in /Test/src/X.java (at line 1)\n" +
+ "1. ERROR in /Test/src/X.java (at line 1)\n" +
" import java.*;\n" +
" ^^^^\n" +
- "The import java is never used\n" +
+ "The package java is not accessible\n" +
"----------\n",
this.problemRequestor);
} finally {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java
index 3b31a80..d972ad3 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java
@@ -73,9 +73,18 @@
}
@Override
public boolean canAccess(PackageBinding pkg) {
- ModuleBinding mod = pkg.enclosingModule;
- if (mod != null && mod != this)
- return mod.isPackageExportedTo(pkg, this);
+ if (pkg instanceof SplitPackageBinding) {
+ for (PackageBinding p : ((SplitPackageBinding) pkg).incarnations) {
+ if (canAccess(p)) {
+ return true;
+ }
+ }
+ return false;
+ } else {
+ ModuleBinding mod = pkg.enclosingModule;
+ if (mod != null && mod != this)
+ return mod.isPackageExportedTo(pkg, this);
+ }
return true;
}
@Override