diff options
Diffstat (limited to 'android/arch.go')
-rw-r--r-- | android/arch.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/android/arch.go b/android/arch.go index 3cc5e8228..e08fd5c0a 100644 --- a/android/arch.go +++ b/android/arch.go @@ -168,7 +168,7 @@ func newArch(name, multilib string) ArchType { return archType } -// ArchTypeList returns the a slice copy of the 4 supported ArchTypes for arm, +// ArchTypeList returns a slice copy of the 4 supported ArchTypes for arm, // arm64, x86 and x86_64. func ArchTypeList() []ArchType { return append([]ArchType(nil), archTypeList...) @@ -408,7 +408,7 @@ func bp2buildArchPathDepsMutator(ctx BottomUpMutatorContext) { // addPathDepsForProps does not descend into sub structs, so we need to descend into the // arch-specific properties ourselves - properties := []interface{}{} + var properties []interface{} for _, archProperties := range m.archProperties { for _, archProps := range archProperties { archPropValues := reflect.ValueOf(archProps).Elem() @@ -995,8 +995,11 @@ func initArchModule(m Module) { // Store the original list of top level property structs base.generalProperties = m.GetProperties() + if len(base.archProperties) != 0 { + panic(fmt.Errorf("module %s already has archProperties", m.Name())) + } - for _, properties := range base.generalProperties { + getStructType := func(properties interface{}) reflect.Type { propertiesValue := reflect.ValueOf(properties) t := propertiesValue.Type() if propertiesValue.Kind() != reflect.Ptr { @@ -1006,10 +1009,14 @@ func initArchModule(m Module) { propertiesValue = propertiesValue.Elem() if propertiesValue.Kind() != reflect.Struct { - panic(fmt.Errorf("properties must be a pointer to a struct, got %T", + panic(fmt.Errorf("properties must be a pointer to a struct, got a pointer to %T", propertiesValue.Interface())) } + return t + } + for _, properties := range base.generalProperties { + t := getStructType(properties) // Get or create the arch-specific property struct types for this property struct type. archPropTypes := archPropTypeMap.Once(NewCustomOnceKey(t), func() interface{} { return createArchPropTypeDesc(t) |