Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jdt.core')
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java3
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java10
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java8
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties1
4 files changed, 21 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
index 79fc84d4e3..64220c7a4d 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/core/compiler/IProblem.java
@@ -1965,6 +1965,9 @@ void setSourceStart(int sourceStart);
int IllegalModifierForModule = ModuleRelated + 1318;
/** @since 3.18 */
int UndefinedModuleAddReads = ModuleRelated + 1319;
+ /** @since 3.20 */
+ int ExportingForeignPackage = ModuleRelated + 1320;
+
/** @since 3.14 */
int DuplicateResource = Internal + 1251;
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java
index 3f5ed7dded..2bc4e22245 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * Copyright (c) 2015, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -314,6 +314,14 @@ public class ModuleDeclaration extends ASTNode implements ReferenceContext {
continue;
if (pb.hasCompilationUnit(true))
continue;
+ for (ModuleBinding req : this.binding.getAllRequiredModules()) {
+ for (PlainPackageBinding exported : req.getExports()) {
+ if (CharOperation.equals(pb.compoundName, exported.compoundName)) {
+ skope.problemReporter().exportingForeignPackage(stat, req);
+ return;
+ }
+ }
+ }
skope.problemReporter().invalidPackageReference(IProblem.PackageDoesNotExistOrIsEmpty, stat);
}
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
index 7876f23a88..c227f5b093 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
@@ -10992,6 +10992,14 @@ public void invalidPackageReference(int problem, PackageVisibilityStatement ref)
ref.pkgRef.sourceStart,
ref.pkgRef.sourceEnd);
}
+public void exportingForeignPackage(PackageVisibilityStatement ref, ModuleBinding enclosingModule) {
+ String[] arguments = new String[] { CharOperation.charToString(ref.pkgName), CharOperation.charToString(enclosingModule.moduleName) };
+ this.handle(IProblem.ExportingForeignPackage,
+ arguments,
+ arguments,
+ ref.pkgRef.sourceStart,
+ ref.pkgRef.sourceEnd);
+}
public void duplicateModuleReference(int problem, ModuleReference ref) {
this.handle(problem,
NoArgument, new String[] { CharOperation.charToString(ref.moduleName) },
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
index 03d5704d4e..c859ddd4db 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/messages.properties
@@ -916,6 +916,7 @@
1317 = Invalid service implementation {0}, must be a public class or interface type
1318 = Illegal modifier for module {0}; only open is permitted
1319 = {0} cannot be resolved to a module, it is referenced from an add-reads directive
+1320 = Cannot export the package {0} which belongs to module {1}
#### Java 9
1351 = Variable resource not allowed here for source level below 9

Back to the top