summaryrefslogtreecommitdiff
path: root/tools/codegen/src
diff options
context:
space:
mode:
authorEugene Susla <eugenesusla@google.com>2020-02-25 18:19:50 -0800
committerEugene Susla <eugenesusla@google.com>2020-02-25 19:04:47 -0800
commitab14c55c1f085153f09741e497eb0cdeee38f0e1 (patch)
treec220a5955464d0f350e01d00e26649d85b69071e /tools/codegen/src
parent43c1cc2e382c4fe9b48f436c12976e56df14ee57 (diff)
Generate @NonNull setter args and @MaySetToNull to opt out
Bug: 143653080 Test: source /usr/local/google/home/eugenesusla/android2/master/frameworks/base/tests/Codegen/runTest.sh Change-Id: Iba8da34c91fd09e266429ab131add1d53449506b
Diffstat (limited to 'tools/codegen/src')
-rw-r--r--tools/codegen/src/com/android/codegen/ClassPrinter.kt2
-rw-r--r--tools/codegen/src/com/android/codegen/FieldInfo.kt14
-rw-r--r--tools/codegen/src/com/android/codegen/Generators.kt2
-rw-r--r--tools/codegen/src/com/android/codegen/ImportsProvider.kt1
-rw-r--r--tools/codegen/src/com/android/codegen/SharedConstants.kt2
5 files changed, 16 insertions, 5 deletions
diff --git a/tools/codegen/src/com/android/codegen/ClassPrinter.kt b/tools/codegen/src/com/android/codegen/ClassPrinter.kt
index c7c80bab67bf..b90e1bb3e7e7 100644
--- a/tools/codegen/src/com/android/codegen/ClassPrinter.kt
+++ b/tools/codegen/src/com/android/codegen/ClassPrinter.kt
@@ -100,7 +100,7 @@ class ClassPrinter(
?: emptyMap()
val internalAnnotations = setOf(ParcelWith, DataClassEnum, PluralOf, UnsupportedAppUsage,
- DataClassSuppressConstDefs)
+ DataClassSuppressConstDefs, MaySetToNull, Each, DataClass)
val knownNonValidationAnnotations = internalAnnotations + Each + Nullable
/**
diff --git a/tools/codegen/src/com/android/codegen/FieldInfo.kt b/tools/codegen/src/com/android/codegen/FieldInfo.kt
index ebfbbd8163b5..02ebaef90f0b 100644
--- a/tools/codegen/src/com/android/codegen/FieldInfo.kt
+++ b/tools/codegen/src/com/android/codegen/FieldInfo.kt
@@ -147,9 +147,19 @@ data class FieldInfo(
val sParcelling by lazy { customParcellingClass?.let { "sParcellingFor$NameUpperCamel" } }
val SetterParamType = if (isArray) "$FieldInnerType..." else Type
- val annotatedTypeForSetterParam by lazy {
- (annotationsNoInternal + SetterParamType).joinToString(" ")
+ val annotationsForSetterParam by lazy {
+ buildList<String> {
+ addAll(annotationsNoInternal)
+ classPrinter {
+ if ("@$Nullable" in annotations
+ && "@$MaySetToNull" !in annotations) {
+ remove("@$Nullable")
+ add("@$NonNull")
+ }
+ }
+ }.joinToString(" ")
}
+ val annotatedTypeForSetterParam by lazy { "$annotationsForSetterParam $SetterParamType" }
// Utilities
diff --git a/tools/codegen/src/com/android/codegen/Generators.kt b/tools/codegen/src/com/android/codegen/Generators.kt
index 8fe243ff68cb..5a96cf1d9bdb 100644
--- a/tools/codegen/src/com/android/codegen/Generators.kt
+++ b/tools/codegen/src/com/android/codegen/Generators.kt
@@ -315,7 +315,7 @@ private fun ClassPrinter.generateBuilderSetters(visibility: String) {
generateBuilderMethod(
name = setterName,
defVisibility = visibility,
- paramAnnotations = annotationsNoInternal.joinToString(" "),
+ paramAnnotations = annotationsForSetterParam,
paramTypes = listOf(SetterParamType),
genJavadoc = { generateFieldJavadoc() }) {
+"checkNotUsed();"
diff --git a/tools/codegen/src/com/android/codegen/ImportsProvider.kt b/tools/codegen/src/com/android/codegen/ImportsProvider.kt
index c830aaa0df3d..27dd9587db25 100644
--- a/tools/codegen/src/com/android/codegen/ImportsProvider.kt
+++ b/tools/codegen/src/com/android/codegen/ImportsProvider.kt
@@ -39,6 +39,7 @@ interface ImportsProvider {
val ParcelWith: String get() { return classRef("com.android.internal.util.DataClass.ParcelWith") }
val PluralOf: String get() { return classRef("com.android.internal.util.DataClass.PluralOf") }
val Each: String get() { return classRef("com.android.internal.util.DataClass.Each") }
+ val MaySetToNull: String get() { return classRef("com.android.internal.util.DataClass.MaySetToNull") }
val DataClassGenerated: String get() { return classRef("com.android.internal.util.DataClass.Generated") }
val DataClassSuppressConstDefs: String get() { return classRef("com.android.internal.util.DataClass.SuppressConstDefsGeneration") }
val DataClassSuppress: String get() { return classRef("com.android.internal.util.DataClass.Suppress") }
diff --git a/tools/codegen/src/com/android/codegen/SharedConstants.kt b/tools/codegen/src/com/android/codegen/SharedConstants.kt
index 74c86f4551f8..6f740cd663e3 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.14"
+const val CODEGEN_VERSION = "1.0.15"
const val CANONICAL_BUILDER_CLASS = "Builder"
const val BASE_BUILDER_CLASS = "BaseBuilder"