Loading tests/Codegen/src/com/android/codegentest/SampleDataClass.java +1 −1 Original line number Diff line number Diff line Loading @@ -1798,7 +1798,7 @@ public final class SampleDataClass implements Parcelable { } @DataClass.Generated( time = 1565048798524L, time = 1565126122525L, codegenVersion = "1.0.0", 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)") Loading tests/Codegen/src/com/android/codegentest/SampleWithCustomBuilder.java +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ public class SampleWithCustomBuilder { } @DataClass.Generated( time = 1565048799396L, time = 1565126123496L, codegenVersion = "1.0.0", 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\nclass SampleWithCustomBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=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 []") Loading tools/codegen/src/com/android/codegen/ClassInfo.kt +21 −6 Original line number Diff line number Diff line package com.android.codegen import com.github.javaparser.JavaParser import com.github.javaparser.ParseProblemException import com.github.javaparser.ParseResult import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration open class ClassInfo(val sourceLines: List<String>) { private val userSourceCode = (sourceLines + "}").joinToString("\n") val fileAst = try { JavaParser.parse(userSourceCode)!! val fileAst: CompilationUnit = try { JAVA_PARSER.parse(userSourceCode).throwIfFailed() } catch (e: ParseProblemException) { throw RuntimeException("Failed to parse code:\n" + throw parseFailed(cause = e) } fun <T> ParseResult<T>.throwIfFailed(): T { if (problems.isNotEmpty()) { throw parseFailed( desc = this@throwIfFailed.problems.joinToString("\n"), cause = this@throwIfFailed.problems.mapNotNull { it.cause.orElse(null) }.firstOrNull()) } return result.get() } private fun parseFailed(cause: Throwable? = null, desc: String = ""): RuntimeException { return RuntimeException("Failed to parse code:\n" + userSourceCode .lines() .mapIndexed { lnNum, ln -> "/*$lnNum*/$ln" } .joinToString("\n"), e) .joinToString("\n") + "\n$desc", cause) } val classAst = fileAst.types[0] as ClassOrInterfaceDeclaration val nestedClasses = classAst.members.filterIsInstance<ClassOrInterfaceDeclaration>() Loading tools/codegen/src/com/android/codegen/ClassPrinter.kt +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ class ClassPrinter( init { val fieldsWithMissingNullablity = fields.filter { field -> !field.isPrimitive && Modifier.TRANSIENT !in field.fieldAst.modifiers && field.fieldAst.modifiers.none { it.keyword == Modifier.Keyword.TRANSIENT } && "@$Nullable" !in field.annotations && "@$NonNull" !in field.annotations } Loading tools/codegen/src/com/android/codegen/FieldInfo.kt +3 −3 Original line number Diff line number Diff line package com.android.codegen import com.github.javaparser.JavaParser import com.github.javaparser.ast.body.FieldDeclaration import com.github.javaparser.ast.expr.ClassExpr import com.github.javaparser.ast.expr.Name Loading Loading @@ -115,8 +114,9 @@ data class FieldInfo( classPrinter { fieldAst.addAnnotation(SingleMemberAnnotationExpr( Name(ParcelWith), ClassExpr(JavaParser.parseClassOrInterfaceType( "$Parcelling.BuiltIn.For$FieldClass")))) ClassExpr(JAVA_PARSER .parseClassOrInterfaceType("$Parcelling.BuiltIn.For$FieldClass") .throwIfFailed()))) } } fieldAst.annotations.map { it.removeComment().toString() } Loading Loading
tests/Codegen/src/com/android/codegentest/SampleDataClass.java +1 −1 Original line number Diff line number Diff line Loading @@ -1798,7 +1798,7 @@ public final class SampleDataClass implements Parcelable { } @DataClass.Generated( time = 1565048798524L, time = 1565126122525L, codegenVersion = "1.0.0", 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)") Loading
tests/Codegen/src/com/android/codegentest/SampleWithCustomBuilder.java +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ public class SampleWithCustomBuilder { } @DataClass.Generated( time = 1565048799396L, time = 1565126123496L, codegenVersion = "1.0.0", 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\nclass SampleWithCustomBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=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 []") Loading
tools/codegen/src/com/android/codegen/ClassInfo.kt +21 −6 Original line number Diff line number Diff line package com.android.codegen import com.github.javaparser.JavaParser import com.github.javaparser.ParseProblemException import com.github.javaparser.ParseResult import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration open class ClassInfo(val sourceLines: List<String>) { private val userSourceCode = (sourceLines + "}").joinToString("\n") val fileAst = try { JavaParser.parse(userSourceCode)!! val fileAst: CompilationUnit = try { JAVA_PARSER.parse(userSourceCode).throwIfFailed() } catch (e: ParseProblemException) { throw RuntimeException("Failed to parse code:\n" + throw parseFailed(cause = e) } fun <T> ParseResult<T>.throwIfFailed(): T { if (problems.isNotEmpty()) { throw parseFailed( desc = this@throwIfFailed.problems.joinToString("\n"), cause = this@throwIfFailed.problems.mapNotNull { it.cause.orElse(null) }.firstOrNull()) } return result.get() } private fun parseFailed(cause: Throwable? = null, desc: String = ""): RuntimeException { return RuntimeException("Failed to parse code:\n" + userSourceCode .lines() .mapIndexed { lnNum, ln -> "/*$lnNum*/$ln" } .joinToString("\n"), e) .joinToString("\n") + "\n$desc", cause) } val classAst = fileAst.types[0] as ClassOrInterfaceDeclaration val nestedClasses = classAst.members.filterIsInstance<ClassOrInterfaceDeclaration>() Loading
tools/codegen/src/com/android/codegen/ClassPrinter.kt +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ class ClassPrinter( init { val fieldsWithMissingNullablity = fields.filter { field -> !field.isPrimitive && Modifier.TRANSIENT !in field.fieldAst.modifiers && field.fieldAst.modifiers.none { it.keyword == Modifier.Keyword.TRANSIENT } && "@$Nullable" !in field.annotations && "@$NonNull" !in field.annotations } Loading
tools/codegen/src/com/android/codegen/FieldInfo.kt +3 −3 Original line number Diff line number Diff line package com.android.codegen import com.github.javaparser.JavaParser import com.github.javaparser.ast.body.FieldDeclaration import com.github.javaparser.ast.expr.ClassExpr import com.github.javaparser.ast.expr.Name Loading Loading @@ -115,8 +114,9 @@ data class FieldInfo( classPrinter { fieldAst.addAnnotation(SingleMemberAnnotationExpr( Name(ParcelWith), ClassExpr(JavaParser.parseClassOrInterfaceType( "$Parcelling.BuiltIn.For$FieldClass")))) ClassExpr(JAVA_PARSER .parseClassOrInterfaceType("$Parcelling.BuiltIn.For$FieldClass") .throwIfFailed()))) } } fieldAst.annotations.map { it.removeComment().toString() } Loading