Loading android/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ bootstrap_go_package { "module.go", "module_context.go", "module_info_json.go", "module_proxy.go", "mutator.go", "namespace.go", "neverallow.go", Loading android/base_module_context.go +58 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ type BaseModuleContext interface { blueprintBaseModuleContext() blueprint.BaseModuleContext EqualModules(m1, m2 Module) bool // OtherModuleName returns the name of another Module. See BaseModuleContext.ModuleName for more information. // It is intended for use inside the visit functions of Visit* and WalkDeps. OtherModuleName(m blueprint.Module) string Loading Loading @@ -130,6 +132,14 @@ type BaseModuleContext interface { // function, it may be invalidated by future mutators. VisitDirectDepsAllowDisabled(visit func(Module)) // VisitDirectDepsProxyAllowDisabled calls visit for each direct dependency. If there are // multiple direct dependencies on the same module visit will be called multiple times on // that module and OtherModuleDependencyTag will return a different tag for each. // // The Module passed to the visit function should not be retained outside of the visit function, it may be // invalidated by future mutators. VisitDirectDepsProxyAllowDisabled(visit func(proxy Module)) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) // VisitDirectDepsIf calls pred for each direct dependency, and if pred returns true calls visit. If there are Loading @@ -155,6 +165,16 @@ type BaseModuleContext interface { // invalidated by future mutators. WalkDeps(visit func(child, parent Module) bool) // WalkDeps calls visit for each transitive dependency, traversing the dependency tree in top down order. visit may // be called multiple times for the same (child, parent) pair if there are multiple direct dependencies between the // child and parent with different tags. OtherModuleDependencyTag will return the tag for the currently visited // (child, parent) pair. If visit returns false WalkDeps will not continue recursing down to child. It skips // any dependencies that are not an android.Module. // // The Modules passed to the visit function should not be retained outside of the visit function, they may be // invalidated by future mutators. WalkDepsProxy(visit func(child, parent Module) bool) // GetWalkPath is supposed to be called in visit function passed in WalkDeps() // and returns a top-down dependency path from a start module to current child module. GetWalkPath() []Module Loading Loading @@ -214,15 +234,26 @@ type baseModuleContext struct { } func getWrappedModule(module blueprint.Module) blueprint.Module { if mp, isProxy := module.(ModuleProxy); isProxy { return mp.module } return module } func (b *baseModuleContext) EqualModules(m1, m2 Module) bool { return b.bp.EqualModules(getWrappedModule(m1), getWrappedModule(m2)) } func (b *baseModuleContext) OtherModuleName(m blueprint.Module) string { return b.bp.OtherModuleName(m) return b.bp.OtherModuleName(getWrappedModule(m)) } func (b *baseModuleContext) OtherModuleDir(m blueprint.Module) string { return b.bp.OtherModuleDir(m) } func (b *baseModuleContext) OtherModuleErrorf(m blueprint.Module, fmt string, args ...interface{}) { b.bp.OtherModuleErrorf(m, fmt, args...) } func (b *baseModuleContext) OtherModuleDependencyTag(m blueprint.Module) blueprint.DependencyTag { return b.bp.OtherModuleDependencyTag(m) return b.bp.OtherModuleDependencyTag(getWrappedModule(m)) } func (b *baseModuleContext) OtherModuleExists(name string) bool { return b.bp.OtherModuleExists(name) } func (b *baseModuleContext) OtherModuleDependencyVariantExists(variations []blueprint.Variation, name string) bool { Loading Loading @@ -395,6 +426,14 @@ func (b *baseModuleContext) VisitDirectDepsAllowDisabled(visit func(Module)) { }) } func (b *baseModuleContext) VisitDirectDepsProxyAllowDisabled(visit func(proxy Module)) { b.bp.VisitDirectDepsProxy(func(module blueprint.ModuleProxy) { visit(ModuleProxy{ module: module, }) }) } func (b *baseModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) { b.bp.VisitDirectDeps(func(module blueprint.Module) { if b.bp.OtherModuleDependencyTag(module) == tag { Loading Loading @@ -466,6 +505,23 @@ func (b *baseModuleContext) WalkDeps(visit func(Module, Module) bool) { }) } func (b *baseModuleContext) WalkDepsProxy(visit func(Module, Module) bool) { b.walkPath = []Module{ModuleProxy{blueprint.CreateModuleProxy(b.Module())}} b.tagPath = []blueprint.DependencyTag{} b.bp.WalkDepsProxy(func(child, parent blueprint.ModuleProxy) bool { childAndroidModule := ModuleProxy{child} parentAndroidModule := ModuleProxy{parent} // record walkPath before visit for b.walkPath[len(b.walkPath)-1] != parentAndroidModule { b.walkPath = b.walkPath[0 : len(b.walkPath)-1] b.tagPath = b.tagPath[0 : len(b.tagPath)-1] } b.walkPath = append(b.walkPath, childAndroidModule) b.tagPath = append(b.tagPath, b.OtherModuleDependencyTag(childAndroidModule)) return visit(childAndroidModule, parentAndroidModule) }) } func (b *baseModuleContext) GetWalkPath() []Module { return b.walkPath } Loading android/module.go +37 −0 Original line number Diff line number Diff line Loading @@ -1803,6 +1803,26 @@ type FinalModuleBuildTargetsInfo struct { var FinalModuleBuildTargetsProvider = blueprint.NewProvider[FinalModuleBuildTargetsInfo]() type CommonPropertiesProviderData struct { Enabled bool // Whether the module has been replaced by a prebuilt ReplacedByPrebuilt bool } var CommonPropertiesProviderKey = blueprint.NewProvider[CommonPropertiesProviderData]() type PrebuiltModuleProviderData struct { // Empty for now } var PrebuiltModuleProviderKey = blueprint.NewProvider[PrebuiltModuleProviderData]() type HostToolProviderData struct { HostToolPath OptionalPath } var HostToolProviderKey = blueprint.NewProvider[HostToolProviderData]() func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) { ctx := &moduleContext{ module: m.module, Loading Loading @@ -2048,6 +2068,23 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) }) } buildComplianceMetadataProvider(ctx, m) commonData := CommonPropertiesProviderData{ ReplacedByPrebuilt: m.commonProperties.ReplacedByPrebuilt, } if m.commonProperties.ForcedDisabled { commonData.Enabled = false } else { commonData.Enabled = m.commonProperties.Enabled.GetOrDefault(m.ConfigurableEvaluator(ctx), !m.Os().DefaultDisabled) } SetProvider(ctx, CommonPropertiesProviderKey, commonData) if p, ok := m.module.(PrebuiltInterface); ok && p.Prebuilt() != nil { SetProvider(ctx, PrebuiltModuleProviderKey, PrebuiltModuleProviderData{}) } if h, ok := m.module.(HostToolProvider); ok { SetProvider(ctx, HostToolProviderKey, HostToolProviderData{ HostToolPath: h.HostToolPath()}) } } func SetJarJarPrefixHandler(handler func(ModuleContext)) { Loading android/module_proxy.go 0 → 100644 +203 −0 Original line number Diff line number Diff line package android import ( "github.com/google/blueprint" "github.com/google/blueprint/proptools" ) type ModuleProxy struct { module blueprint.ModuleProxy } func (m ModuleProxy) Name() string { return m.module.Name() } func (m ModuleProxy) GenerateBuildActions(context blueprint.ModuleContext) { m.module.GenerateBuildActions(context) } func (m ModuleProxy) GenerateAndroidBuildActions(context ModuleContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ComponentDepsMutator(ctx BottomUpMutatorContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) DepsMutator(context BottomUpMutatorContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) base() *ModuleBase { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Disable() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Enabled(ctx ConfigurableEvaluatorContext) bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Target() Target { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) MultiTargets() []Target { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ImageVariation() blueprint.Variation { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Owner() string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInData() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInTestcases() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInSanitizerDir() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInVendorRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInDebugRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRecovery() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRoot() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInOdm() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInProduct() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInVendor() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInSystemExt() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallForceOS() (*OsType, *ArchType) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) PartitionTag(d DeviceConfig) string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) HideFromMake() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsHideFromMake() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsSkipInstall() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) MakeUninstallable() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ReplacedByPrebuilt() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsReplacedByPrebuilt() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ExportedToMake() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) EffectiveLicenseKinds() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) EffectiveLicenseFiles() Paths { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) AddProperties(props ...interface{}) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) GetProperties() []interface{} { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) BuildParamsForTests() []BuildParams { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) RuleParamsForTests() map[blueprint.Rule]blueprint.RuleParams { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) VariablesForTests() map[string]string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) String() string { return m.module.Name() } func (m ModuleProxy) qualifiedModuleId(ctx BaseModuleContext) qualifiedModuleName { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) visibilityProperties() []visibilityProperty { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) RequiredModuleNames(ctx ConfigurableEvaluatorContext) []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) HostRequiredModuleNames() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) TargetRequiredModuleNames() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator { panic("method is not implemented on ModuleProxy") } android/provider.go +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ var _ OtherModuleProviderContext = (*TestContext)(nil) // OtherModuleProviderContext is a helper interface that accepts ModuleContext, BottomUpMutatorContext, or // TopDownMutatorContext. func OtherModuleProvider[K any](ctx OtherModuleProviderContext, module blueprint.Module, provider blueprint.ProviderKey[K]) (K, bool) { value, ok := ctx.otherModuleProvider(module, provider) value, ok := ctx.otherModuleProvider(getWrappedModule(module), provider) if !ok { var k K return k, false Loading Loading
android/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ bootstrap_go_package { "module.go", "module_context.go", "module_info_json.go", "module_proxy.go", "mutator.go", "namespace.go", "neverallow.go", Loading
android/base_module_context.go +58 −2 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ type BaseModuleContext interface { blueprintBaseModuleContext() blueprint.BaseModuleContext EqualModules(m1, m2 Module) bool // OtherModuleName returns the name of another Module. See BaseModuleContext.ModuleName for more information. // It is intended for use inside the visit functions of Visit* and WalkDeps. OtherModuleName(m blueprint.Module) string Loading Loading @@ -130,6 +132,14 @@ type BaseModuleContext interface { // function, it may be invalidated by future mutators. VisitDirectDepsAllowDisabled(visit func(Module)) // VisitDirectDepsProxyAllowDisabled calls visit for each direct dependency. If there are // multiple direct dependencies on the same module visit will be called multiple times on // that module and OtherModuleDependencyTag will return a different tag for each. // // The Module passed to the visit function should not be retained outside of the visit function, it may be // invalidated by future mutators. VisitDirectDepsProxyAllowDisabled(visit func(proxy Module)) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) // VisitDirectDepsIf calls pred for each direct dependency, and if pred returns true calls visit. If there are Loading @@ -155,6 +165,16 @@ type BaseModuleContext interface { // invalidated by future mutators. WalkDeps(visit func(child, parent Module) bool) // WalkDeps calls visit for each transitive dependency, traversing the dependency tree in top down order. visit may // be called multiple times for the same (child, parent) pair if there are multiple direct dependencies between the // child and parent with different tags. OtherModuleDependencyTag will return the tag for the currently visited // (child, parent) pair. If visit returns false WalkDeps will not continue recursing down to child. It skips // any dependencies that are not an android.Module. // // The Modules passed to the visit function should not be retained outside of the visit function, they may be // invalidated by future mutators. WalkDepsProxy(visit func(child, parent Module) bool) // GetWalkPath is supposed to be called in visit function passed in WalkDeps() // and returns a top-down dependency path from a start module to current child module. GetWalkPath() []Module Loading Loading @@ -214,15 +234,26 @@ type baseModuleContext struct { } func getWrappedModule(module blueprint.Module) blueprint.Module { if mp, isProxy := module.(ModuleProxy); isProxy { return mp.module } return module } func (b *baseModuleContext) EqualModules(m1, m2 Module) bool { return b.bp.EqualModules(getWrappedModule(m1), getWrappedModule(m2)) } func (b *baseModuleContext) OtherModuleName(m blueprint.Module) string { return b.bp.OtherModuleName(m) return b.bp.OtherModuleName(getWrappedModule(m)) } func (b *baseModuleContext) OtherModuleDir(m blueprint.Module) string { return b.bp.OtherModuleDir(m) } func (b *baseModuleContext) OtherModuleErrorf(m blueprint.Module, fmt string, args ...interface{}) { b.bp.OtherModuleErrorf(m, fmt, args...) } func (b *baseModuleContext) OtherModuleDependencyTag(m blueprint.Module) blueprint.DependencyTag { return b.bp.OtherModuleDependencyTag(m) return b.bp.OtherModuleDependencyTag(getWrappedModule(m)) } func (b *baseModuleContext) OtherModuleExists(name string) bool { return b.bp.OtherModuleExists(name) } func (b *baseModuleContext) OtherModuleDependencyVariantExists(variations []blueprint.Variation, name string) bool { Loading Loading @@ -395,6 +426,14 @@ func (b *baseModuleContext) VisitDirectDepsAllowDisabled(visit func(Module)) { }) } func (b *baseModuleContext) VisitDirectDepsProxyAllowDisabled(visit func(proxy Module)) { b.bp.VisitDirectDepsProxy(func(module blueprint.ModuleProxy) { visit(ModuleProxy{ module: module, }) }) } func (b *baseModuleContext) VisitDirectDepsWithTag(tag blueprint.DependencyTag, visit func(Module)) { b.bp.VisitDirectDeps(func(module blueprint.Module) { if b.bp.OtherModuleDependencyTag(module) == tag { Loading Loading @@ -466,6 +505,23 @@ func (b *baseModuleContext) WalkDeps(visit func(Module, Module) bool) { }) } func (b *baseModuleContext) WalkDepsProxy(visit func(Module, Module) bool) { b.walkPath = []Module{ModuleProxy{blueprint.CreateModuleProxy(b.Module())}} b.tagPath = []blueprint.DependencyTag{} b.bp.WalkDepsProxy(func(child, parent blueprint.ModuleProxy) bool { childAndroidModule := ModuleProxy{child} parentAndroidModule := ModuleProxy{parent} // record walkPath before visit for b.walkPath[len(b.walkPath)-1] != parentAndroidModule { b.walkPath = b.walkPath[0 : len(b.walkPath)-1] b.tagPath = b.tagPath[0 : len(b.tagPath)-1] } b.walkPath = append(b.walkPath, childAndroidModule) b.tagPath = append(b.tagPath, b.OtherModuleDependencyTag(childAndroidModule)) return visit(childAndroidModule, parentAndroidModule) }) } func (b *baseModuleContext) GetWalkPath() []Module { return b.walkPath } Loading
android/module.go +37 −0 Original line number Diff line number Diff line Loading @@ -1803,6 +1803,26 @@ type FinalModuleBuildTargetsInfo struct { var FinalModuleBuildTargetsProvider = blueprint.NewProvider[FinalModuleBuildTargetsInfo]() type CommonPropertiesProviderData struct { Enabled bool // Whether the module has been replaced by a prebuilt ReplacedByPrebuilt bool } var CommonPropertiesProviderKey = blueprint.NewProvider[CommonPropertiesProviderData]() type PrebuiltModuleProviderData struct { // Empty for now } var PrebuiltModuleProviderKey = blueprint.NewProvider[PrebuiltModuleProviderData]() type HostToolProviderData struct { HostToolPath OptionalPath } var HostToolProviderKey = blueprint.NewProvider[HostToolProviderData]() func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) { ctx := &moduleContext{ module: m.module, Loading Loading @@ -2048,6 +2068,23 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) }) } buildComplianceMetadataProvider(ctx, m) commonData := CommonPropertiesProviderData{ ReplacedByPrebuilt: m.commonProperties.ReplacedByPrebuilt, } if m.commonProperties.ForcedDisabled { commonData.Enabled = false } else { commonData.Enabled = m.commonProperties.Enabled.GetOrDefault(m.ConfigurableEvaluator(ctx), !m.Os().DefaultDisabled) } SetProvider(ctx, CommonPropertiesProviderKey, commonData) if p, ok := m.module.(PrebuiltInterface); ok && p.Prebuilt() != nil { SetProvider(ctx, PrebuiltModuleProviderKey, PrebuiltModuleProviderData{}) } if h, ok := m.module.(HostToolProvider); ok { SetProvider(ctx, HostToolProviderKey, HostToolProviderData{ HostToolPath: h.HostToolPath()}) } } func SetJarJarPrefixHandler(handler func(ModuleContext)) { Loading
android/module_proxy.go 0 → 100644 +203 −0 Original line number Diff line number Diff line package android import ( "github.com/google/blueprint" "github.com/google/blueprint/proptools" ) type ModuleProxy struct { module blueprint.ModuleProxy } func (m ModuleProxy) Name() string { return m.module.Name() } func (m ModuleProxy) GenerateBuildActions(context blueprint.ModuleContext) { m.module.GenerateBuildActions(context) } func (m ModuleProxy) GenerateAndroidBuildActions(context ModuleContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ComponentDepsMutator(ctx BottomUpMutatorContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) DepsMutator(context BottomUpMutatorContext) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) base() *ModuleBase { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Disable() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Enabled(ctx ConfigurableEvaluatorContext) bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Target() Target { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) MultiTargets() []Target { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ImageVariation() blueprint.Variation { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) Owner() string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInData() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInTestcases() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInSanitizerDir() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInVendorRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInDebugRamdisk() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRecovery() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInRoot() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInOdm() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInProduct() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInVendor() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallInSystemExt() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) InstallForceOS() (*OsType, *ArchType) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) PartitionTag(d DeviceConfig) string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) HideFromMake() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsHideFromMake() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsSkipInstall() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) MakeUninstallable() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ReplacedByPrebuilt() { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) IsReplacedByPrebuilt() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ExportedToMake() bool { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) EffectiveLicenseKinds() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) EffectiveLicenseFiles() Paths { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) AddProperties(props ...interface{}) { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) GetProperties() []interface{} { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) BuildParamsForTests() []BuildParams { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) RuleParamsForTests() map[blueprint.Rule]blueprint.RuleParams { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) VariablesForTests() map[string]string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) String() string { return m.module.Name() } func (m ModuleProxy) qualifiedModuleId(ctx BaseModuleContext) qualifiedModuleName { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) visibilityProperties() []visibilityProperty { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) RequiredModuleNames(ctx ConfigurableEvaluatorContext) []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) HostRequiredModuleNames() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) TargetRequiredModuleNames() []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) VintfFragmentModuleNames(ctx ConfigurableEvaluatorContext) []string { panic("method is not implemented on ModuleProxy") } func (m ModuleProxy) ConfigurableEvaluator(ctx ConfigurableEvaluatorContext) proptools.ConfigurableEvaluator { panic("method is not implemented on ModuleProxy") }
android/provider.go +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ var _ OtherModuleProviderContext = (*TestContext)(nil) // OtherModuleProviderContext is a helper interface that accepts ModuleContext, BottomUpMutatorContext, or // TopDownMutatorContext. func OtherModuleProvider[K any](ctx OtherModuleProviderContext, module blueprint.Module, provider blueprint.ProviderKey[K]) (K, bool) { value, ok := ctx.otherModuleProvider(module, provider) value, ok := ctx.otherModuleProvider(getWrappedModule(module), provider) if !ok { var k K return k, false Loading