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
This commit is contained in:
@@ -32,7 +32,7 @@ public class HierrarchicalDataClassBase implements Parcelable {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -98,8 +98,8 @@ public class HierrarchicalDataClassBase implements Parcelable {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006405823L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122837821L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/HierrarchicalDataClassBase.java",
|
||||
inputSignatures = "private int mBaseData\nclass HierrarchicalDataClassBase extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genSetters=true)")
|
||||
@Deprecated
|
||||
|
||||
@@ -46,7 +46,7 @@ public class HierrarchicalDataClassChild extends HierrarchicalDataClassBase {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -120,8 +120,8 @@ public class HierrarchicalDataClassChild extends HierrarchicalDataClassBase {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006406833L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122838768L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/HierrarchicalDataClassChild.java",
|
||||
inputSignatures = "private @android.annotation.NonNull java.lang.String mChildData\nclass HierrarchicalDataClassChild extends com.android.codegentest.HierrarchicalDataClassBase implements []\n@com.android.internal.util.DataClass(genParcelable=true, genConstructor=false, genSetters=true)")
|
||||
@Deprecated
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -291,7 +291,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
|
||||
|
||||
/** @see #setStringList */
|
||||
@DataClass.Generated.Member
|
||||
public @NonNull Builder addStringList(String value) {
|
||||
public @NonNull Builder addStringList(@NonNull String value) {
|
||||
// You can refine this method's name by providing item's singular name, e.g.:
|
||||
// @DataClass.PluralOf("item")) mItems = ...
|
||||
|
||||
@@ -310,7 +310,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
|
||||
|
||||
/** @see #setMap */
|
||||
@DataClass.Generated.Member
|
||||
public @NonNull Builder addMap(String key, SampleWithCustomBuilder value) {
|
||||
public @NonNull Builder addMap(@NonNull String key, @NonNull SampleWithCustomBuilder value) {
|
||||
// You can refine this method's name by providing item's singular name, e.g.:
|
||||
// @DataClass.PluralOf("item")) mItems = ...
|
||||
|
||||
@@ -329,7 +329,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
|
||||
|
||||
/** @see #setStringMap */
|
||||
@DataClass.Generated.Member
|
||||
public @NonNull Builder addStringMap(String key, String value) {
|
||||
public @NonNull Builder addStringMap(@NonNull String key, @NonNull String value) {
|
||||
// You can refine this method's name by providing item's singular name, e.g.:
|
||||
// @DataClass.PluralOf("item")) mItems = ...
|
||||
|
||||
@@ -412,8 +412,8 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
|
||||
}
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006404728L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122836960L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/ParcelAllTheThingsDataClass.java",
|
||||
inputSignatures = " @android.annotation.NonNull java.lang.String[] mStringArray\n @android.annotation.NonNull int[] mIntArray\n @android.annotation.NonNull java.util.List<java.lang.String> mStringList\n @android.annotation.NonNull java.util.Map<java.lang.String,com.android.codegentest.SampleWithCustomBuilder> mMap\n @android.annotation.NonNull java.util.Map<java.lang.String,java.lang.String> mStringMap\n @android.annotation.NonNull android.util.SparseArray<com.android.codegentest.SampleWithCustomBuilder> mSparseArray\n @android.annotation.NonNull android.util.SparseIntArray mSparseIntArray\n @java.lang.SuppressWarnings({\"WeakerAccess\"}) @android.annotation.Nullable java.lang.Boolean mNullableBoolean\nclass ParcelAllTheThingsDataClass extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genAidl=false, genToString=true)")
|
||||
@Deprecated
|
||||
|
||||
@@ -342,7 +342,7 @@ public final class SampleDataClass implements Parcelable {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -1636,7 +1636,7 @@ public final class SampleDataClass implements Parcelable {
|
||||
|
||||
/** @see #setLinkAddresses2 */
|
||||
@DataClass.Generated.Member
|
||||
public @NonNull Builder addLinkAddresses2(LinkAddress value) {
|
||||
public @NonNull Builder addLinkAddresses2(@NonNull LinkAddress value) {
|
||||
// You can refine this method's name by providing item's singular name, e.g.:
|
||||
// @DataClass.PluralOf("item")) mItems = ...
|
||||
|
||||
@@ -1661,7 +1661,7 @@ public final class SampleDataClass implements Parcelable {
|
||||
|
||||
/** @see #setLinkAddresses */
|
||||
@DataClass.Generated.Member
|
||||
public @NonNull Builder addLinkAddress(LinkAddress value) {
|
||||
public @NonNull Builder addLinkAddress(@NonNull LinkAddress value) {
|
||||
if (mLinkAddresses == null) setLinkAddresses(new ArrayList<>());
|
||||
mLinkAddresses.add(value);
|
||||
return this;
|
||||
@@ -1872,8 +1872,8 @@ public final class SampleDataClass implements Parcelable {
|
||||
}
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006402566L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122835009L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleDataClass.java",
|
||||
inputSignatures = "public static final java.lang.String STATE_NAME_UNDEFINED\npublic static final java.lang.String STATE_NAME_ON\npublic static final java.lang.String STATE_NAME_OFF\npublic static final int STATE_UNDEFINED\npublic static final int STATE_ON\npublic static final int STATE_OFF\npublic static final @com.android.codegentest.SampleDataClass.RequestFlags int FLAG_MANUAL_REQUEST\npublic static final @com.android.codegentest.SampleDataClass.RequestFlags int FLAG_COMPATIBILITY_MODE_REQUEST\npublic static final @com.android.codegentest.SampleDataClass.RequestFlags int FLAG_AUGMENTED_REQUEST\nprivate int mNum\nprivate int mNum2\nprivate int mNum4\nprivate @android.annotation.Nullable java.lang.String mName\nprivate @android.annotation.NonNull java.lang.String mName2\nprivate @android.annotation.NonNull java.lang.String mName4\nprivate @android.annotation.Nullable android.view.accessibility.AccessibilityNodeInfo mOtherParcelable\nprivate @com.android.internal.util.DataClass.ParcelWith(com.android.codegentest.MyDateParcelling.class) @android.annotation.NonNull java.util.Date mDate\nprivate @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForPattern.class) @android.annotation.NonNull java.util.regex.Pattern mPattern\nprivate @android.annotation.NonNull java.util.List<android.net.LinkAddress> mLinkAddresses2\nprivate @com.android.internal.util.DataClass.PluralOf(\"linkAddress\") @android.annotation.NonNull java.util.ArrayList<android.net.LinkAddress> mLinkAddresses\nprivate @android.annotation.Nullable android.net.LinkAddress[] mLinkAddresses4\nprivate @com.android.codegentest.SampleDataClass.StateName @android.annotation.NonNull java.lang.String mStateName\nprivate @com.android.codegentest.SampleDataClass.RequestFlags int mFlags\nprivate @com.android.codegentest.SampleDataClass.State int mState\npublic @android.annotation.NonNull java.lang.CharSequence charSeq\nprivate final @android.annotation.Nullable android.net.LinkAddress[] mLinkAddresses5\nprivate transient android.net.LinkAddress[] mLinkAddresses6\ntransient int[] mTmpStorage\nprivate @android.annotation.StringRes int mStringRes\nprivate @android.annotation.IntRange(from=0L, to=6L) int mDayOfWeek\nprivate @android.annotation.Size(2L) @android.annotation.NonNull @com.android.internal.util.DataClass.Each @android.annotation.FloatRange(from=0.0) float[] mCoords\nprivate static java.lang.String defaultName4()\nprivate int[] lazyInitTmpStorage()\npublic android.net.LinkAddress[] getLinkAddresses4()\nprivate boolean patternEquals(java.util.regex.Pattern)\nprivate int patternHashCode()\nprivate void onConstructed()\npublic void dump(java.io.PrintWriter)\nclass SampleDataClass extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genConstructor=true, genEqualsHashCode=true, genToString=true, genForEachField=true, genSetters=true)")
|
||||
@Deprecated
|
||||
|
||||
@@ -85,7 +85,7 @@ public class SampleWithCustomBuilder implements Parcelable {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -253,8 +253,8 @@ public class SampleWithCustomBuilder implements Parcelable {
|
||||
}
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006403628L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122835982L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithCustomBuilder.java",
|
||||
inputSignatures = " long delayAmount\n @android.annotation.NonNull java.util.concurrent.TimeUnit delayUnit\n long creationTimestamp\nprivate static java.util.concurrent.TimeUnit unparcelDelayUnit(android.os.Parcel)\nprivate void parcelDelayUnit(android.os.Parcel,int)\nclass SampleWithCustomBuilder extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genAidl=false, genToString=true)\nabstract com.android.codegentest.SampleWithCustomBuilder.Builder setDelayAmount(long)\npublic abstract com.android.codegentest.SampleWithCustomBuilder.Builder setDelayUnit(java.util.concurrent.TimeUnit)\npublic com.android.codegentest.SampleWithCustomBuilder.Builder setDelay(long,java.util.concurrent.TimeUnit)\nclass BaseBuilder extends java.lang.Object implements []")
|
||||
@Deprecated
|
||||
|
||||
@@ -36,7 +36,7 @@ public class SampleWithNestedDataClasses {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -135,8 +135,8 @@ public class SampleWithNestedDataClasses {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006408903L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122840588L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
|
||||
inputSignatures = " @android.annotation.NonNull java.lang.String mBar\nclass NestedDataClass extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
|
||||
@Deprecated
|
||||
@@ -160,7 +160,7 @@ public class SampleWithNestedDataClasses {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -259,8 +259,8 @@ public class SampleWithNestedDataClasses {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006408912L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122840597L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
|
||||
inputSignatures = " @android.annotation.NonNull long mBaz2\nclass NestedDataClass3 extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
|
||||
@Deprecated
|
||||
@@ -274,7 +274,7 @@ public class SampleWithNestedDataClasses {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -373,8 +373,8 @@ public class SampleWithNestedDataClasses {
|
||||
};
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006408917L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122840608L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
|
||||
inputSignatures = " @android.annotation.NonNull java.lang.String mBaz\nclass NestedDataClass2 extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
|
||||
@Deprecated
|
||||
|
||||
@@ -51,7 +51,7 @@ public class StaleDataclassDetectorFalsePositivesTest {
|
||||
|
||||
|
||||
|
||||
// Code below generated by codegen v1.0.13.
|
||||
// Code below generated by codegen v1.0.14.
|
||||
//
|
||||
// DO NOT MODIFY!
|
||||
// CHECKSTYLE:OFF Generated code
|
||||
@@ -65,8 +65,8 @@ public class StaleDataclassDetectorFalsePositivesTest {
|
||||
|
||||
|
||||
@DataClass.Generated(
|
||||
time = 1573006407900L,
|
||||
codegenVersion = "1.0.13",
|
||||
time = 1574122839646L,
|
||||
codegenVersion = "1.0.14",
|
||||
sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/StaleDataclassDetectorFalsePositivesTest.java",
|
||||
inputSignatures = "public @android.annotation.NonNull java.lang.String someMethod(int)\nclass StaleDataclassDetectorFalsePositivesTest extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=false)")
|
||||
@Deprecated
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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 }) {
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user