diff options
Diffstat (limited to 'android/singleton.go')
-rw-r--r-- | android/singleton.go | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/android/singleton.go b/android/singleton.go index a03ea74aa..e5f26842a 100644 --- a/android/singleton.go +++ b/android/singleton.go @@ -36,7 +36,7 @@ type SingletonContext interface { // ModuleVariantsFromName returns the list of module variants named `name` in the same namespace as `referer` enforcing visibility rules. // Allows generating build actions for `referer` based on the metadata for `name` deferred until the singleton context. - ModuleVariantsFromName(referer Module, name string) []Module + ModuleVariantsFromName(referer ModuleProxy, name string) []ModuleProxy otherModuleProvider(module blueprint.Module, provider blueprint.AnyProviderKey) (any, bool) @@ -290,6 +290,10 @@ func (s *singletonContextAdaptor) ModuleType(module blueprint.Module) string { return s.SingletonContext.ModuleType(getWrappedModule(module)) } +func (s *singletonContextAdaptor) BlueprintFile(module blueprint.Module) string { + return s.SingletonContext.BlueprintFile(getWrappedModule(module)) +} + func (s *singletonContextAdaptor) VisitAllModulesBlueprint(visit func(blueprint.Module)) { s.SingletonContext.VisitAllModules(visit) } @@ -327,7 +331,7 @@ func (s *singletonContextAdaptor) VisitAllModuleVariants(module Module, visit fu } func (s *singletonContextAdaptor) VisitAllModuleVariantProxies(module Module, visit func(proxy ModuleProxy)) { - s.SingletonContext.VisitAllModuleVariantProxies(module, visitProxyAdaptor(visit)) + s.SingletonContext.VisitAllModuleVariantProxies(getWrappedModule(module), visitProxyAdaptor(visit)) } func (s *singletonContextAdaptor) PrimaryModule(module Module) Module { @@ -339,32 +343,30 @@ func (s *singletonContextAdaptor) PrimaryModuleProxy(module ModuleProxy) ModuleP } func (s *singletonContextAdaptor) IsFinalModule(module Module) bool { - return s.SingletonContext.IsFinalModule(module) + return s.SingletonContext.IsFinalModule(getWrappedModule(module)) } -func (s *singletonContextAdaptor) ModuleVariantsFromName(referer Module, name string) []Module { +func (s *singletonContextAdaptor) ModuleVariantsFromName(referer ModuleProxy, name string) []ModuleProxy { // get module reference for visibility enforcement - qualified := createVisibilityModuleReference(s.ModuleName(referer), s.ModuleDir(referer), referer) - - modules := s.SingletonContext.ModuleVariantsFromName(referer, name) - result := make([]Module, 0, len(modules)) - for _, m := range modules { - if module, ok := m.(Module); ok { - // enforce visibility - depName := s.ModuleName(module) - depDir := s.ModuleDir(module) - depQualified := qualifiedModuleName{depDir, depName} - // Targets are always visible to other targets in their own package. - if depQualified.pkg != qualified.name.pkg { - rule := effectiveVisibilityRules(s.Config(), depQualified) - if !rule.matches(qualified) { - s.ModuleErrorf(referer, "module %q references %q which is not visible to this module\nYou may need to add %q to its visibility", - referer.Name(), depQualified, "//"+s.ModuleDir(referer)) - continue - } + qualified := createVisibilityModuleProxyReference(s, s.ModuleName(referer), s.ModuleDir(referer), referer) + + modules := s.SingletonContext.ModuleVariantsFromName(referer.module, name) + result := make([]ModuleProxy, 0, len(modules)) + for _, module := range modules { + // enforce visibility + depName := s.ModuleName(module) + depDir := s.ModuleDir(module) + depQualified := qualifiedModuleName{depDir, depName} + // Targets are always visible to other targets in their own package. + if depQualified.pkg != qualified.name.pkg { + rule := effectiveVisibilityRules(s.Config(), depQualified) + if !rule.matches(qualified) { + s.ModuleErrorf(referer, "module %q references %q which is not visible to this module\nYou may need to add %q to its visibility", + referer.Name(), depQualified, "//"+s.ModuleDir(referer)) + continue } - result = append(result, module) } + result = append(result, ModuleProxy{module}) } return result } |