Inherit default_visibility from parent package
Enhances the visibility mechanism to use the default_visibility property of the closest ancestor package that has the property specified. Bug: 133290645 Test: m droid Change-Id: I7248e9034a73894ac8d514f913316438c4d7c079
This commit is contained in:
@@ -413,11 +413,7 @@ func visibilityRuleEnforcer(ctx TopDownMutatorContext) {
|
||||
if ok {
|
||||
rule = value.(compositeRule)
|
||||
} else {
|
||||
packageQualifiedId := depQualified.getContainingPackageId()
|
||||
value, ok = moduleToVisibilityRule.Load(packageQualifiedId)
|
||||
if ok {
|
||||
rule = value.(compositeRule)
|
||||
}
|
||||
rule = packageDefaultVisibility(ctx, depQualified)
|
||||
}
|
||||
if rule != nil && !rule.matches(qualified) {
|
||||
ctx.ModuleErrorf("depends on %s which is not visible to this module", depQualified)
|
||||
@@ -431,3 +427,20 @@ func createQualifiedModuleName(ctx BaseModuleContext) qualifiedModuleName {
|
||||
qualified := qualifiedModuleName{dir, moduleName}
|
||||
return qualified
|
||||
}
|
||||
|
||||
func packageDefaultVisibility(ctx BaseModuleContext, moduleId qualifiedModuleName) compositeRule {
|
||||
moduleToVisibilityRule := moduleToVisibilityRuleMap(ctx)
|
||||
packageQualifiedId := moduleId.getContainingPackageId()
|
||||
for {
|
||||
value, ok := moduleToVisibilityRule.Load(packageQualifiedId)
|
||||
if ok {
|
||||
return value.(compositeRule)
|
||||
}
|
||||
|
||||
if packageQualifiedId.isRootPackage() {
|
||||
return nil
|
||||
}
|
||||
|
||||
packageQualifiedId = packageQualifiedId.getContainingPackageId()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user