aboutsummaryrefslogtreecommitdiffstats
path: root/android
diff options
context:
space:
mode:
authorJaewoong Jung <jungjw@google.com>2019-03-27 11:17:14 -0700
committerJaewoong Jung <jungjw@google.com>2019-03-27 11:21:24 -0700
commita641ee9cc78840e2067533d83a41aebe070b5b60 (patch)
tree14f211d4a935a78726fc390f59e88dc844e5ff3e /android
parentac7f27eab0ca0574f14875416fa471137c8736f2 (diff)
downloadbuild_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.go14
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