diff options
author | Jaewoong Jung <jungjw@google.com> | 2019-03-27 11:17:14 -0700 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2019-03-27 11:21:24 -0700 |
commit | a641ee9cc78840e2067533d83a41aebe070b5b60 (patch) | |
tree | 14f211d4a935a78726fc390f59e88dc844e5ff3e /android | |
parent | ac7f27eab0ca0574f14875416fa471137c8736f2 (diff) | |
download | build_soong-a641ee9cc78840e2067533d83a41aebe070b5b60.tar.gz build_soong-a641ee9cc78840e2067533d83a41aebe070b5b60.tar.bz2 build_soong-a641ee9cc78840e2067533d83a41aebe070b5b60.zip |
Fix an override_module bug.
proptools.PrependProperties doesn't replace a pointer when both the src
and the dst have one. This prevented override_module from overriding
simple value pointer properties when the base module has existing
values. It turns out this was why the name property needed to be
overwritten manually.
Bug: 122957760
Test: app_test.go
Change-Id: I3302287c31a560422548c22fade95261ddbe606a
Diffstat (limited to 'android')
-rw-r--r-- | android/override_module.go | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/android/override_module.go b/android/override_module.go index 02db359f..119bca1c 100644 --- a/android/override_module.go +++ b/android/override_module.go @@ -134,10 +134,15 @@ func (b *OverridableModuleBase) setOverridesProperty(overridesProperty *[]string // Overrides a base module with the given OverrideModule. func (b *OverridableModuleBase) override(ctx BaseModuleContext, o OverrideModule) { + // Adds the base module to the overrides property, if exists, of the overriding module. See the + // comment on OverridableModuleBase.overridesProperty for details. + if b.overridesProperty != nil { + *b.overridesProperty = append(*b.overridesProperty, b.Name()) + } for _, p := range b.overridableProperties { for _, op := range o.getOverridingProperties() { if proptools.TypeEqual(p, op) { - err := proptools.PrependProperties(p, op, nil) + err := proptools.AppendProperties(p, op, nil) if err != nil { if propertyErr, ok := err.(*proptools.ExtendPropertyError); ok { ctx.PropertyErrorf(propertyErr.Property, "%s", propertyErr.Err.Error()) @@ -148,13 +153,6 @@ func (b *OverridableModuleBase) override(ctx BaseModuleContext, o OverrideModule } } } - // Adds the base module to the overrides property, if exists, of the overriding module. See the - // comment on OverridableModuleBase.overridesProperty for details. - if b.overridesProperty != nil { - *b.overridesProperty = append(*b.overridesProperty, b.Name()) - } - // The base module name property has to be updated separately for Name() to work as intended. - b.module.base().nameProperties.Name = proptools.StringPtr(o.Name()) } // Mutators for override/overridable modules. All the fun happens in these functions. It is critical |