diff --git a/android/mutator.go b/android/mutator.go index 8bfb24ed3..9552aa15c 100644 --- a/android/mutator.go +++ b/android/mutator.go @@ -69,7 +69,14 @@ func RegisterMutatorsForBazelConversion(ctx *Context, preArchMutators, depsMutat mctx.mutators.registerAll(ctx) } -func registerMutators(ctx *Context, preArch, preDeps, postDeps, finalDeps []RegisterMutatorFunc) { +// collateGloballyRegisteredMutators constructs the list of mutators that have been registered +// with the InitRegistrationContext and will be used at runtime. +func collateGloballyRegisteredMutators() sortableComponents { + return collateRegisteredMutators(preArch, preDeps, postDeps, finalDeps) +} + +// collateRegisteredMutators constructs a single list of mutators from the separate lists. +func collateRegisteredMutators(preArch, preDeps, postDeps, finalDeps []RegisterMutatorFunc) sortableComponents { mctx := ®isterMutatorsContext{} register := func(funcs []RegisterMutatorFunc) { @@ -89,7 +96,7 @@ func registerMutators(ctx *Context, preArch, preDeps, postDeps, finalDeps []Regi mctx.finalPhase = true register(finalDeps) - mctx.mutators.registerAll(ctx) + return mctx.mutators } type registerMutatorsContext struct { diff --git a/android/register.go b/android/register.go index 5efa280cc..278a04f26 100644 --- a/android/register.go +++ b/android/register.go @@ -188,7 +188,8 @@ func (ctx *Context) Register() { singletons.registerAll(ctx) - registerMutators(ctx, preArch, preDeps, postDeps, finalDeps) + mutators := collateGloballyRegisteredMutators() + mutators.registerAll(ctx) ctx.RegisterSingletonType("bazeldeps", SingletonFactoryAdaptor(ctx, BazelSingleton)) diff --git a/android/testing.go b/android/testing.go index 556db7863..b134eae38 100644 --- a/android/testing.go +++ b/android/testing.go @@ -141,7 +141,8 @@ func (ctx *TestContext) DepsBp2BuildMutators(f RegisterMutatorFunc) { } func (ctx *TestContext) Register() { - registerMutators(ctx.Context, ctx.preArch, ctx.preDeps, ctx.postDeps, ctx.finalDeps) + mutators := collateRegisteredMutators(ctx.preArch, ctx.preDeps, ctx.postDeps, ctx.finalDeps) + mutators.registerAll(ctx.Context) ctx.RegisterSingletonType("env", EnvSingleton) }