diff options
author | Eugene Susla <eugenesusla@google.com> | 2020-03-06 18:53:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-06 18:53:24 +0000 |
commit | 8f562219c80d2f7a56c87bee65304b25006ab11d (patch) | |
tree | 14d4eb3409927479106f4499ac10acf977f3acd2 /tools | |
parent | 5957853da603d04724e5f67dc30a807578c5057d (diff) | |
parent | 47ca5d035e039205b68b310b66d3d1b04318966a (diff) |
Merge "Generate @NonNull setter args and @MaySetToNull to opt out" into rvc-dev
Diffstat (limited to 'tools')
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" |