diff options
Diffstat (limited to 'org.eclipse.jdt.core')
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 |