summaryrefslogtreecommitdiff
path: root/tools/codegen/src
diff options
context:
space:
mode:
authorEugene Susla <eugenesusla@google.com>2019-11-18 16:09:52 -0800
committerEugene Susla <eugenesusla@google.com>2019-11-18 16:39:55 -0800
commitf745042916b5dbae69f44769722c094454b98228 (patch)
tree9d8e29ec3ca74976bc9c0f4cfe4ff7710a2e025a /tools/codegen/src
parent6b860590aa6b0f338d763915f341a021d6d31f0e (diff)
Add @NonNull annotation to Builder.addXXX args
API guidelines is for each non-primitive arg to have a nullablility annotation. Since it's very rate for collections to permit null values, just assume collections only accept @NunNull emenents for now. Fixes: 144725154 Test: . frameworks/base/tests/Codegen/runTest.sh Change-Id: I333327490bd8eb9bb031f062c80283bd405173af
Diffstat (limited to 'tools/codegen/src')
-rw-r--r--tools/codegen/src/com/android/codegen/ClassPrinter.kt8
-rw-r--r--tools/codegen/src/com/android/codegen/Generators.kt14
-rw-r--r--tools/codegen/src/com/android/codegen/SharedConstants.kt2
3 files changed, 18 insertions, 6 deletions
diff --git a/tools/codegen/src/com/android/codegen/ClassPrinter.kt b/tools/codegen/src/com/android/codegen/ClassPrinter.kt
index a4fd374d0c6e..c7c80bab67bf 100644
--- a/tools/codegen/src/com/android/codegen/ClassPrinter.kt
+++ b/tools/codegen/src/com/android/codegen/ClassPrinter.kt
@@ -164,7 +164,13 @@ class ClassPrinter(
getSuppressedMembers(classAst)
}
val builderSuppressedMembers by lazy {
- getSuppressedMembers(customBaseBuilderAst)
+ getSuppressedMembers(customBaseBuilderAst) + suppressedMembers.mapNotNull {
+ if (it.startsWith("$CANONICAL_BUILDER_CLASS.")) {
+ it.removePrefix("$CANONICAL_BUILDER_CLASS.")
+ } else {
+ null
+ }
+ }
}
private fun getSuppressedMembers(clazz: ClassOrInterfaceDeclaration?): List<String> {
diff --git a/tools/codegen/src/com/android/codegen/Generators.kt b/tools/codegen/src/com/android/codegen/Generators.kt
index dc1f4c50abc4..8fe243ff68cb 100644
--- a/tools/codegen/src/com/android/codegen/Generators.kt
+++ b/tools/codegen/src/com/android/codegen/Generators.kt
@@ -270,7 +270,7 @@ fun ClassPrinter.generateBuilder() {
private fun ClassPrinter.generateBuilderMethod(
defVisibility: String,
name: String,
- ParamAnnotations: String? = null,
+ paramAnnotations: String? = null,
paramTypes: List<String>,
paramNames: List<String> = listOf("value"),
genJavadoc: ClassPrinter.() -> Unit,
@@ -292,8 +292,12 @@ private fun ClassPrinter.generateBuilderMethod(
+GENERATED_MEMBER_HEADER
if (providedMethod?.isAbstract == true) +"@Override"
if (!Annotations.isNullOrEmpty()) +Annotations
- "$visibility @$NonNull $ReturnType $name(${if_(!ParamAnnotations.isNullOrEmpty(), "$ParamAnnotations ")}${
- paramTypes.zip(paramNames).joinToString(", ") { (Type, paramName) -> "$Type $paramName" }
+ val ParamAnnotations = if (!paramAnnotations.isNullOrEmpty()) "$paramAnnotations " else ""
+
+ "$visibility @$NonNull $ReturnType $name(${
+ paramTypes.zip(paramNames).joinToString(", ") { (Type, paramName) ->
+ "$ParamAnnotations$Type $paramName"
+ }
})" {
genBody()
}
@@ -311,7 +315,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) {
generateBuilderMethod(
name = setterName,
defVisibility = visibility,
- ParamAnnotations = annotationsNoInternal.joinToString(" "),
+ paramAnnotations = annotationsNoInternal.joinToString(" "),
paramTypes = listOf(SetterParamType),
genJavadoc = { generateFieldJavadoc() }) {
+"checkNotUsed();"
@@ -333,6 +337,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) {
generateBuilderMethod(
name = adderName,
defVisibility = visibility,
+ paramAnnotations = "@$NonNull",
paramTypes = listOf(FieldInnerType),
genJavadoc = { +javadocSeeSetter }) {
@@ -347,6 +352,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) {
generateBuilderMethod(
name = adderName,
defVisibility = visibility,
+ paramAnnotations = "@$NonNull",
paramTypes = fieldTypeGenegicArgs,
paramNames = listOf("key", "value"),
genJavadoc = { +javadocSeeSetter }) {
diff --git a/tools/codegen/src/com/android/codegen/SharedConstants.kt b/tools/codegen/src/com/android/codegen/SharedConstants.kt
index 85c832fcf34f..74c86f4551f8 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.13"
+const val CODEGEN_VERSION = "1.0.14"
const val CANONICAL_BUILDER_CLASS = "Builder"
const val BASE_BUILDER_CLASS = "BaseBuilder"