Merge changes I152f8e5e,I3259a9b8 into main

* changes:
  Reland "Remove non-generic provider APIs"
  Update usage of SetProvider
This commit is contained in:
Colin Cross 2023-12-22 17:40:00 +00:00 committed by Gerrit Code Review
commit ad579a8c71
5 changed files with 17 additions and 52 deletions

View file

@ -75,34 +75,28 @@ type BaseModuleContext interface {
// It is intended for use inside the visit functions of Visit* and WalkDeps.
OtherModuleType(m blueprint.Module) string
// OtherModuleProvider returns the value for a provider for the given module. If the value is
// not set it returns the zero value of the type of the provider, so the return value can always
// be type asserted to the type of the provider. The value returned may be a deep copy of the
// value originally passed to SetProvider.
OtherModuleProvider(m blueprint.Module, provider blueprint.AnyProviderKey) any
// OtherModuleHasProvider returns true if the provider for the given module has been set.
OtherModuleHasProvider(m blueprint.Module, provider blueprint.AnyProviderKey) bool
// otherModuleProvider returns the value for a provider for the given module. If the value is
// not set it returns nil and false. The value returned may be a deep copy of the value originally
// passed to SetProvider.
//
// This method shouldn't be used directly, prefer the type-safe android.OtherModuleProvider instead.
otherModuleProvider(m blueprint.Module, provider blueprint.AnyProviderKey) (any, bool)
// Provider returns the value for a provider for the current module. If the value is
// not set it returns the zero value of the type of the provider, so the return value can always
// be type asserted to the type of the provider. It panics if called before the appropriate
// not set it returns nil and false. It panics if called before the appropriate
// mutator or GenerateBuildActions pass for the provider. The value returned may be a deep
// copy of the value originally passed to SetProvider.
Provider(provider blueprint.AnyProviderKey) any
// HasProvider returns true if the provider for the current module has been set.
HasProvider(provider blueprint.AnyProviderKey) bool
//
// This method shouldn't be used directly, prefer the type-safe android.ModuleProvider instead.
provider(provider blueprint.AnyProviderKey) (any, bool)
// SetProvider sets the value for a provider for the current module. It panics if not called
// setProvider sets the value for a provider for the current module. It panics if not called
// during the appropriate mutator or GenerateBuildActions pass for the provider, if the value
// is not of the appropriate type, or if the value has already been set. The value should not
// be modified after being passed to SetProvider.
SetProvider(provider blueprint.AnyProviderKey, value interface{})
//
// This method shouldn't be used directly, prefer the type-safe android.SetProvider instead.
setProvider(provider blueprint.AnyProviderKey, value any)
GetDirectDepsWithTag(tag blueprint.DependencyTag) []Module
@ -264,35 +258,16 @@ func (b *baseModuleContext) OtherModuleReverseDependencyVariantExists(name strin
func (b *baseModuleContext) OtherModuleType(m blueprint.Module) string {
return b.bp.OtherModuleType(m)
}
func (b *baseModuleContext) OtherModuleProvider(m blueprint.Module, provider blueprint.AnyProviderKey) any {
value, _ := b.bp.OtherModuleProvider(m, provider)
return value
}
func (b *baseModuleContext) OtherModuleHasProvider(m blueprint.Module, provider blueprint.AnyProviderKey) bool {
_, ok := b.bp.OtherModuleProvider(m, provider)
return ok
}
func (b *baseModuleContext) otherModuleProvider(m blueprint.Module, provider blueprint.AnyProviderKey) (any, bool) {
return b.bp.OtherModuleProvider(m, provider)
}
func (b *baseModuleContext) Provider(provider blueprint.AnyProviderKey) any {
value, _ := b.bp.Provider(provider)
return value
}
func (b *baseModuleContext) HasProvider(provider blueprint.AnyProviderKey) bool {
_, ok := b.bp.Provider(provider)
return ok
}
func (b *baseModuleContext) provider(provider blueprint.AnyProviderKey) (any, bool) {
return b.bp.Provider(provider)
}
func (b *baseModuleContext) SetProvider(provider blueprint.AnyProviderKey, value any) {
func (b *baseModuleContext) setProvider(provider blueprint.AnyProviderKey, value any) {
b.bp.SetProvider(provider, value)
}

View file

@ -79,7 +79,7 @@ func SingletonModuleProvider[K any](ctx SingletonModuleProviderContext, module b
// SetProviderContext is a helper interface that is a subset of ModuleContext, BottomUpMutatorContext, or
// TopDownMutatorContext for use in SetProvider.
type SetProviderContext interface {
SetProvider(provider blueprint.AnyProviderKey, value any)
setProvider(provider blueprint.AnyProviderKey, value any)
}
var _ SetProviderContext = BaseModuleContext(nil)
@ -95,7 +95,7 @@ var _ SetProviderContext = TopDownMutatorContext(nil)
// SetProviderContext is a helper interface that accepts ModuleContext, BottomUpMutatorContext, or
// TopDownMutatorContext.
func SetProvider[K any](ctx SetProviderContext, provider blueprint.ProviderKey[K], value K) {
ctx.SetProvider(provider, value)
ctx.setProvider(provider, value)
}
var _ OtherModuleProviderContext = (*otherModuleProviderAdaptor)(nil)

View file

@ -203,16 +203,6 @@ func (ctx *TestContext) HardCodedPreArchMutators(f RegisterMutatorFunc) {
ctx.PreArchMutators(f)
}
func (ctx *TestContext) ModuleProvider(m blueprint.Module, p blueprint.AnyProviderKey) any {
value, _ := ctx.Context.ModuleProvider(m, p)
return value
}
func (ctx *TestContext) ModuleHasProvider(m blueprint.Module, p blueprint.AnyProviderKey) bool {
_, ok := ctx.Context.ModuleProvider(m, p)
return ok
}
func (ctx *TestContext) moduleProvider(m blueprint.Module, p blueprint.AnyProviderKey) (any, bool) {
return ctx.Context.ModuleProvider(m, p)
}

View file

@ -2386,7 +2386,7 @@ func (a *apexBundle) provideApexExportsInfo(ctx android.ModuleContext) {
ProfilePathOnHost: info.ProfilePathOnHost(),
LibraryNameToDexJarPathOnHost: info.DexBootJarPathMap(),
}
ctx.SetProvider(android.ApexExportsInfoProvider, exports)
android.SetProvider(ctx, android.ApexExportsInfoProvider, exports)
}
})
}

View file

@ -790,7 +790,7 @@ func (p *prebuiltCommon) provideApexExportsInfo(ctx android.ModuleContext) {
ProfilePathOnHost: di.PrebuiltExportPath(java.ProfileInstallPathInApex),
LibraryNameToDexJarPathOnHost: javaModuleToDexPath,
}
ctx.SetProvider(android.ApexExportsInfoProvider, exports)
android.SetProvider(ctx, android.ApexExportsInfoProvider, exports)
} else {
ctx.ModuleErrorf(err.Error())
}