Prevent evaluating configurable properties before the defaults mutator

So that we can change the configuration after the defaults mutator
has run.

Bug: 361816274
Test: Presubmits
Change-Id: I550088b2555d275a86b5dd4d57e85a9ece859233
This commit is contained in:
Cole Faust
2024-09-13 13:37:59 -07:00
parent c2ea958b3d
commit d706709bf0
2 changed files with 8 additions and 0 deletions

View File

@@ -2215,6 +2215,7 @@ func (m *ModuleBase) IsNativeBridgeSupported() bool {
type ConfigurableEvaluatorContext interface {
Config() Config
OtherModulePropertyErrorf(module Module, property string, fmt string, args ...interface{})
HasMutatorFinished(mutatorName string) bool
}
type configurationEvalutor struct {
@@ -2236,6 +2237,12 @@ func (e configurationEvalutor) PropertyErrorf(property string, fmt string, args
func (e configurationEvalutor) EvaluateConfiguration(condition proptools.ConfigurableCondition, property string) proptools.ConfigurableValue {
ctx := e.ctx
m := e.m
if !ctx.HasMutatorFinished("defaults") {
ctx.OtherModulePropertyErrorf(m, property, "Cannot evaluate configurable property before the defaults mutator has run")
return proptools.ConfigurableValueUndefined()
}
switch condition.FunctionName() {
case "release_flag":
if condition.NumArgs() != 1 {

View File

@@ -118,6 +118,7 @@ func runPackagingTest(t *testing.T, config testConfig, bp string, expected []str
}
result := GroupFixturePreparers(
PrepareForTestWithDefaults,
PrepareForTestWithArchMutator,
FixtureRegisterWithContext(func(ctx RegistrationContext) {
ctx.RegisterModuleType("component", componentTestModuleFactory)