summaryrefslogtreecommitdiff
path: root/tools/codegen
diff options
context:
space:
mode:
authorEugene Susla <eugenesusla@google.com>2019-10-22 10:37:26 -0700
committerEugene Susla <eugenesusla@google.com>2019-11-05 18:14:24 -0800
commitc5c636a5ea9942190f67eb81d83a553f97197e83 (patch)
tree57582ffbc316b74450f219da5bfc46d3e1288a26 /tools/codegen
parentae8e97a822d18e6d4affc55c6b9d34620b6bca28 (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.kt4
-rw-r--r--tools/codegen/src/com/android/codegen/Generators.kt7
-rw-r--r--tools/codegen/src/com/android/codegen/SharedConstants.kt2
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"