Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 419dc6cb authored by Eugene Susla's avatar Eugene Susla Committed by Android (Google) Code Review
Browse files

Merge "Update codegen to match javaparser update"

parents 57346535 b3361098
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)")
+1 −1
Original line number Diff line number Diff line
@@ -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 []")
+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>()

+1 −1
Original line number Diff line number Diff line
@@ -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
        }
+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
@@ -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