Merge "Fix special case when appending a visibility rule to //visibility:private."
This commit is contained in:
commit
e3fa145692
|
@ -500,6 +500,17 @@ func EffectiveVisibilityRules(ctx BaseModuleContext, module Module) []string {
|
||||||
// without checking the visibility rules. Here we need to add that visibility
|
// without checking the visibility rules. Here we need to add that visibility
|
||||||
// explicitly.
|
// explicitly.
|
||||||
if rule != nil && !rule.matches(qualified) {
|
if rule != nil && !rule.matches(qualified) {
|
||||||
|
if len(rule) == 1 {
|
||||||
|
if _, ok := rule[0].(privateRule); ok {
|
||||||
|
// If the rule is //visibility:private we can't append another
|
||||||
|
// visibility to it. Semantically we need to convert it to a package
|
||||||
|
// visibility rule for the location where the result is used, but since
|
||||||
|
// modules are implicitly visible within the package we get the same
|
||||||
|
// result without any rule at all, so just make it an empty list to be
|
||||||
|
// appended below.
|
||||||
|
rule = compositeRule{}
|
||||||
|
}
|
||||||
|
}
|
||||||
rule = append(rule, packageRule{dir})
|
rule = append(rule, packageRule{dir})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,7 @@ func TestSnapshotVisibility(t *testing.T) {
|
||||||
"myjavalib",
|
"myjavalib",
|
||||||
"mypublicjavalib",
|
"mypublicjavalib",
|
||||||
"mydefaultedjavalib",
|
"mydefaultedjavalib",
|
||||||
|
"myprivatejavalib",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,6 +141,14 @@ func TestSnapshotVisibility(t *testing.T) {
|
||||||
system_modules: "none",
|
system_modules: "none",
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "myprivatejavalib",
|
||||||
|
srcs: ["Test.java"],
|
||||||
|
visibility: ["//visibility:private"],
|
||||||
|
system_modules: "none",
|
||||||
|
sdk_version: "none",
|
||||||
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
result := testSdkWithFs(t, ``,
|
result := testSdkWithFs(t, ``,
|
||||||
|
@ -206,6 +215,20 @@ java_import {
|
||||||
jars: ["java/mydefaultedjavalib.jar"],
|
jars: ["java/mydefaultedjavalib.jar"],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
java_import {
|
||||||
|
name: "mysdk_myprivatejavalib@current",
|
||||||
|
sdk_member_name: "myprivatejavalib",
|
||||||
|
visibility: ["//package"],
|
||||||
|
jars: ["java/myprivatejavalib.jar"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_import {
|
||||||
|
name: "myprivatejavalib",
|
||||||
|
prefer: false,
|
||||||
|
visibility: ["//package"],
|
||||||
|
jars: ["java/myprivatejavalib.jar"],
|
||||||
|
}
|
||||||
|
|
||||||
sdk_snapshot {
|
sdk_snapshot {
|
||||||
name: "mysdk@current",
|
name: "mysdk@current",
|
||||||
visibility: [
|
visibility: [
|
||||||
|
@ -216,6 +239,7 @@ sdk_snapshot {
|
||||||
"mysdk_myjavalib@current",
|
"mysdk_myjavalib@current",
|
||||||
"mysdk_mypublicjavalib@current",
|
"mysdk_mypublicjavalib@current",
|
||||||
"mysdk_mydefaultedjavalib@current",
|
"mysdk_mydefaultedjavalib@current",
|
||||||
|
"mysdk_myprivatejavalib@current",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
`))
|
`))
|
||||||
|
|
Loading…
Reference in New Issue