diff options
author | Eugene Susla <eugenesusla@google.com> | 2019-10-22 10:37:26 -0700 |
---|---|---|
committer | Eugene Susla <eugenesusla@google.com> | 2019-11-05 18:14:24 -0800 |
commit | c5c636a5ea9942190f67eb81d83a553f97197e83 (patch) | |
tree | 57582ffbc316b74450f219da5bfc46d3e1288a26 /tools/codegen | |
parent | ae8e97a822d18e6d4affc55c6b9d34620b6bca28 (diff) |
Fix codegen ArrayMap fields
Fixes: 143112074
Test: . frameworks/base/tests/Codegen/runTest.sh
Change-Id: Iec0fa89a91955f8b4e4b5b8d4dd9d7f0b30c608f
Diffstat (limited to 'tools/codegen')
-rw-r--r-- | tools/codegen/src/com/android/codegen/FieldInfo.kt | 4 | ||||
-rw-r--r-- | tools/codegen/src/com/android/codegen/Generators.kt | 7 | ||||
-rw-r--r-- | tools/codegen/src/com/android/codegen/SharedConstants.kt | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/tools/codegen/src/com/android/codegen/FieldInfo.kt b/tools/codegen/src/com/android/codegen/FieldInfo.kt index ed35a1dfc599..ebfbbd8163b5 100644 --- a/tools/codegen/src/com/android/codegen/FieldInfo.kt +++ b/tools/codegen/src/com/android/codegen/FieldInfo.kt @@ -93,6 +93,8 @@ data class FieldInfo( // Generic args val isArray = Type.endsWith("[]") val isList = FieldClass == "List" || FieldClass == "ArrayList" + val isMap = FieldClass == "Map" || FieldClass == "ArrayMap" + || FieldClass == "HashMap" || FieldClass == "LinkedHashMap" val fieldBit = bitAtExpr(index) var isLast = false val isFinal = fieldAst.isFinal @@ -197,7 +199,7 @@ data class FieldInfo( listOf("String", "CharSequence", "Exception", "Size", "SizeF", "Bundle", "FileDescriptor", "SparseBooleanArray", "SparseIntArray", "SparseArray") -> FieldClass - FieldClass == "Map" && fieldTypeGenegicArgs[0] == "String" -> "Map" + isMap && fieldTypeGenegicArgs[0] == "String" -> "Map" isArray -> when { FieldInnerType!! in (PRIMITIVE_TYPES + "String") -> FieldInnerType + "Array" isBinder(FieldInnerType) -> "BinderArray" diff --git a/tools/codegen/src/com/android/codegen/Generators.kt b/tools/codegen/src/com/android/codegen/Generators.kt index c25d0c74f251..dc1f4c50abc4 100644 --- a/tools/codegen/src/com/android/codegen/Generators.kt +++ b/tools/codegen/src/com/android/codegen/Generators.kt @@ -343,7 +343,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) { } } - if (FieldClass.endsWith("Map") && FieldInnerType != null) { + if (isMap && FieldInnerType != null) { generateBuilderMethod( name = adderName, defVisibility = visibility, @@ -351,7 +351,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) { paramNames = listOf("key", "value"), genJavadoc = { +javadocSeeSetter }) { !singularNameCustomizationHint - +"if ($name == null) $setterName(new $LinkedHashMap());" + +"if ($name == null) $setterName(new ${if (FieldClass == "Map") LinkedHashMap else FieldClass}());" +"$name.put(key, value);" +"return$maybeCast this;" } @@ -507,7 +507,8 @@ fun ClassPrinter.generateParcelable() { // Create container if any val containerInitExpr = when { - FieldClass.endsWith("Map") -> "new $LinkedHashMap<>()" + FieldClass == "Map" -> "new $LinkedHashMap<>()" + isMap -> "new $FieldClass()" FieldClass == "List" || FieldClass == "ArrayList" -> "new ${classRef("java.util.ArrayList")}<>()" else -> "" diff --git a/tools/codegen/src/com/android/codegen/SharedConstants.kt b/tools/codegen/src/com/android/codegen/SharedConstants.kt index 339057f24833..85c832fcf34f 100644 --- a/tools/codegen/src/com/android/codegen/SharedConstants.kt +++ b/tools/codegen/src/com/android/codegen/SharedConstants.kt @@ -1,7 +1,7 @@ package com.android.codegen const val CODEGEN_NAME = "codegen" -const val CODEGEN_VERSION = "1.0.12" +const val CODEGEN_VERSION = "1.0.13" const val CANONICAL_BUILDER_CLASS = "Builder" const val BASE_BUILDER_CLASS = "BaseBuilder" |