/** * Is this package exported from its module? * Does not consider export restrictions. */ public boolean isExported() { if (this.isExported == null) { this.enclosingModule.getExports(); // ensure resolved and completed if (this.isExported == null) this.isExported = Boolean.FALSE; } return this.isExported == Boolean.TRUE; } /**
/** * Is this package exported from its module? * Does not consider export restrictions. */ public boolean isExported() { if (this.isExported == null) { if (this.enclosingModule.isAuto) { this.isExported = Boolean.TRUE; } else { this.enclosingModule.getExports(); // ensure resolved and completed if (this.isExported == null) this.isExported = Boolean.FALSE; } } return this.isExported == Boolean.TRUE; } /**
@Override public PackageBinding[] getExports() { if (this.exportedPackages == null && this.unresolvedExports != null) resolvePackages(); return super.getExports(); }
@Override public IPackageBinding[] getExportedPackages() { if (this.exports == null) { org.eclipse.jdt.internal.compiler.lookup.PackageBinding[] compilerExports = this.binding.getExports(); this.exports = Arrays.stream(compilerExports) .map(e -> this.resolver.getPackageBinding(e)) .toArray(IPackageBinding[]::new); } return this.exports; }
@Override public PackageBinding[] getExports() { if (this.exportedPackages == null && this.unresolvedExports != null) resolvePackages(); return super.getExports(); }
@Override public IPackageBinding[] getExportedPackages() { if (this.exports == null) { org.eclipse.jdt.internal.compiler.lookup.PackageBinding[] compilerExports = this.binding.getExports(); this.exports = Arrays.stream(compilerExports) .map(e -> this.resolver.getPackageBinding(e)) .toArray(IPackageBinding[]::new); } return this.exports; }
private void analyseOneDependency(RequiresStatement requiresStat, ModuleBinding requiredModule, CompilationUnitScope skope, Map<String, Set<ModuleBinding>> pack2mods) { for (PackageBinding pack : requiredModule.getExports()) { Set<ModuleBinding> mods = pack2mods.get(String.valueOf(pack.readableName())); if (mods != null && mods.size() > 1) skope.problemReporter().conflictingPackagesFromModules(pack, mods, requiresStat.sourceStart, requiresStat.sourceEnd); } }
private void analyseOneDependency(RequiresStatement requiresStat, ModuleBinding requiredModule, CompilationUnitScope skope, Map<String, Set<ModuleBinding>> pack2mods) { for (PackageBinding pack : requiredModule.getExports()) { Set<ModuleBinding> mods = pack2mods.get(String.valueOf(pack.readableName())); if (mods != null && mods.size() > 1) skope.problemReporter().conflictingPackagesFromModules(pack, mods, requiresStat.sourceStart, requiresStat.sourceEnd); } }
private void initRootModules(LookupEnvironment environment, FileSystem fileSystem) { Map<String, String> map = new HashMap<>(); for (String m : this.rootModules) { ModuleBinding mod = environment.getModule(m.toCharArray()); if (mod == null) { throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$ } PackageBinding[] exports = mod.getExports(); for (PackageBinding packageBinding : exports) { String qName = CharOperation.toString(packageBinding.compoundName); String existing = map.get(qName); if (existing != null) { throw new IllegalArgumentException(this.bind("configure.packageConflict", new String[] {qName, existing, m})); //$NON-NLS-1$ // report an error and bail out } map.put(qName, m); } } if (this.limitedModules != null) { for (String m : this.limitedModules) { ModuleBinding mod = environment.getModule(m.toCharArray()); if (mod == null) { throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$ } } } } private ReferenceBinding[] processClassNames(LookupEnvironment environment) {
private void initRootModules(LookupEnvironment environment, FileSystem fileSystem) { Map<String, String> map = new HashMap<>(); for (String m : this.rootModules) { ModuleBinding mod = environment.getModule(m.toCharArray()); if (mod == null) { throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$ } PackageBinding[] exports = mod.getExports(); for (PackageBinding packageBinding : exports) { String qName = CharOperation.toString(packageBinding.compoundName); String existing = map.get(qName); if (existing != null) { throw new IllegalArgumentException(this.bind("configure.packageConflict", new String[] {qName, existing, m})); //$NON-NLS-1$ // report an error and bail out } map.put(qName, m); } } if (this.limitedModules != null) { for (String m : this.limitedModules) { ModuleBinding mod = environment.getModule(m.toCharArray()); if (mod == null) { throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$ } } } } private ReferenceBinding[] processClassNames(LookupEnvironment environment) {
public void analyseModuleGraph(CompilationUnitScope skope) { if (this.requires != null) { // collect transitively: Map<String, Set<ModuleBinding>> pack2mods = new HashMap<>(); for (ModuleBinding requiredModule : this.binding.getAllRequiredModules()) { for (PackageBinding exportedPackage : requiredModule.getExports()) { if (this.binding.canAccess(exportedPackage)) { String packName = String.valueOf(exportedPackage.readableName()); Set<ModuleBinding> mods = pack2mods.get(packName); if (mods == null) pack2mods.put(packName, mods = new HashSet<>()); mods.add(requiredModule); } } } // report against the causing requires directives: for (RequiresStatement requiresStat : this.requires) { ModuleBinding requiredModule = requiresStat.resolvedBinding; if (requiredModule != null) { analyseOneDependency(requiresStat, requiredModule, skope, pack2mods); if (requiresStat.isTransitive()) { for (ModuleBinding secondLevelModule : requiredModule.getAllRequiredModules()) analyseOneDependency(requiresStat, secondLevelModule, skope, pack2mods); } } } } }
packs = this.binding.getExports(); for (PackageBinding pBinding : packs) { unique.add(getModulesPackageBinding(pBinding));
public void analyseModuleGraph(CompilationUnitScope skope) { if (this.requires != null) { // collect transitively: Map<String, Set<ModuleBinding>> pack2mods = new HashMap<>(); for (ModuleBinding requiredModule : this.binding.getAllRequiredModules()) { for (PackageBinding exportedPackage : requiredModule.getExports()) { if (this.binding.canAccess(exportedPackage)) { String packName = String.valueOf(exportedPackage.readableName()); Set<ModuleBinding> mods = pack2mods.get(packName); if (mods == null) pack2mods.put(packName, mods = new HashSet<>()); mods.add(requiredModule); } } } // report against the causing requires directives: for (RequiresStatement requiresStat : this.requires) { ModuleBinding requiredModule = requiresStat.resolvedBinding; if (requiredModule != null) { if (requiredModule.isDeprecated()) skope.problemReporter().deprecatedModule(requiresStat.module, requiredModule); analyseOneDependency(requiresStat, requiredModule, skope, pack2mods); if (requiresStat.isTransitive()) { for (ModuleBinding secondLevelModule : requiredModule.getAllRequiredModules()) analyseOneDependency(requiresStat, secondLevelModule, skope, pack2mods); } } } } }
mod.getExports(); mod.getRequires(); mod.getOpens();
mod.getExports(); mod.getRequires(); mod.getOpens();
this.directives = new ArrayList<>(); PackageBinding[] packs = this.binding.getExports(); for (PackageBinding exp : packs) { exp = getModulesPackageBinding(exp);
return pkg.enclosingModule == this; // no transitive export PackageBinding[] initializedExports = getExports(); for (int i = 0; i < initializedExports.length; i++) { PackageBinding export = initializedExports[i];
return pkg.enclosingModule == this; // no transitive export PackageBinding[] initializedExports = getExports(); for (int i = 0; i < initializedExports.length; i++) { PackageBinding export = initializedExports[i];
private void matchPackageReferences(SearchPattern pattern, MatchLocator locator) throws CoreException { // Only process PackageReference patterns switch (pattern.kind) { case PKG_REF_PATTERN: break; case OR_PATTERN: SearchPattern[] patterns = ((OrPattern) pattern).patterns; for (int i = 0, length = patterns.length; i < length; i++) { SearchPattern p = patterns[i]; if (p.kind == PKG_REF_PATTERN) matchPackageReferences(patterns[i], locator); } // $FALL-THROUGH$ - fall through default to return default: return; } matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getExports()); matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getOpens()); matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getUses()); TypeBinding[] services = this.module.getServices(); if (services != null) { matchPackReferences(locator, (PackageReferencePattern) pattern, services); for (TypeBinding service : services) { matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getImplementations(service)); } } } private void matchPackReferences(MatchLocator locator, PackageReferencePattern packReferencePattern,
private void matchPackageReferences(SearchPattern pattern, MatchLocator locator) throws CoreException { // Only process PackageReference patterns switch (pattern.kind) { case PKG_REF_PATTERN: break; case OR_PATTERN: SearchPattern[] patterns = ((OrPattern) pattern).patterns; for (int i = 0, length = patterns.length; i < length; i++) { SearchPattern p = patterns[i]; if (p.kind == PKG_REF_PATTERN) matchPackageReferences(patterns[i], locator); } // $FALL-THROUGH$ - fall through default to return default: return; } matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getExports()); matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getOpens()); matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getUses()); TypeBinding[] services = this.module.getServices(); if (services != null) { matchPackReferences(locator, (PackageReferencePattern) pattern, services); for (TypeBinding service : services) { matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getImplementations(service)); } } } private void matchPackReferences(MatchLocator locator, PackageReferencePattern packReferencePattern,