mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-11 14:11:36 +00:00
8177311: Denied access when named module accesses unreferences package from the unnamed module
Ensure access to the unnamed module is allowed if the given module reads the unnamed module. Reviewed-by: jjg
This commit is contained in:
parent
96c6439d7c
commit
dc292b699a
@ -334,7 +334,10 @@ public class Resolve {
|
||||
currModule.complete();
|
||||
PackageSymbol p = c.packge();
|
||||
isAccessible =
|
||||
(currModule == p.modle) || currModule.visiblePackages.get(p.fullname) == p || p == syms.rootPackage;
|
||||
currModule == p.modle ||
|
||||
currModule.visiblePackages.get(p.fullname) == p ||
|
||||
p == syms.rootPackage ||
|
||||
(p.modle == syms.unnamedModule && currModule.readModules.contains(p.modle));
|
||||
} else {
|
||||
isAccessible = true;
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8154283 8167320 8171098 8172809 8173068 8173117 8176045
|
||||
* @bug 8154283 8167320 8171098 8172809 8173068 8173117 8176045 8177311
|
||||
* @summary tests for multi-module mode compilation
|
||||
* @library /tools/lib
|
||||
* @modules
|
||||
@ -958,4 +958,41 @@ public class EdgeCases extends ModuleTestBase {
|
||||
throw new Exception("expected output not found: " + log);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDependOnUnnamedAccessibility(Path base) throws Exception {
|
||||
Path unnamedSrc = base.resolve("unnamed-src");
|
||||
tb.writeJavaFiles(unnamedSrc,
|
||||
"package p1; public class First { public static p2.Second get() { return null; } }",
|
||||
"package p2; public class Second { public void test() { } }");
|
||||
Path unnamedClasses = base.resolve("unnamed-classes");
|
||||
tb.createDirectories(unnamedClasses);
|
||||
|
||||
System.err.println("compiling unnamed sources:");
|
||||
|
||||
new JavacTask(tb)
|
||||
.outdir(unnamedClasses)
|
||||
.files(findJavaFiles(unnamedSrc))
|
||||
.run()
|
||||
.writeAll();
|
||||
|
||||
//test sources:
|
||||
Path src = base.resolve("src");
|
||||
Path m = src.resolve("m");
|
||||
tb.writeJavaFiles(m,
|
||||
"module m { }",
|
||||
"package p; public class Test { { p1.First.get().test(); } }");
|
||||
Path classes = base.resolve("classes");
|
||||
tb.createDirectories(classes);
|
||||
|
||||
System.err.println("compiling test module:");
|
||||
|
||||
new JavacTask(tb)
|
||||
.options("-classpath", unnamedClasses.toString(),
|
||||
"--add-reads", "m=ALL-UNNAMED")
|
||||
.outdir(classes)
|
||||
.files(findJavaFiles(src))
|
||||
.run()
|
||||
.writeAll();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user