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

Commit 322e8b17 authored by Eugene Susla's avatar Eugene Susla
Browse files

[codegen] Support nested classes

Adds support for arbitrarily-nested @DataClasses
Only static ones are supported for now

See FileInfo for the main implementation piece

Fixes: 139833958
Test: . frameworks/base/tests/Codegen/runTest.sh
Change-Id: I31cd16969788c47003a7a15a3573a4bf623ab960
parent 4a0b1750
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ else
        header_and_eval codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/HierrarchicalDataClassBase.java && \
        header_and_eval codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/HierrarchicalDataClassChild.java && \
        header_and_eval codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/StaleDataclassDetectorFalsePositivesTest.java && \
        header_and_eval codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java && \
        (
            cd $ANDROID_BUILD_TOP &&
            header_and_eval mmma -j16 frameworks/base/tests/Codegen && \
+7 −3
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ public class HierrarchicalDataClassBase implements Parcelable {



    // Code below generated by codegen v1.0.9.
    // Code below generated by codegen v1.0.11.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
@@ -98,11 +98,15 @@ public class HierrarchicalDataClassBase implements Parcelable {
    };

    @DataClass.Generated(
            time = 1571258914826L,
            codegenVersion = "1.0.9",
            time = 1572630437620L,
            codegenVersion = "1.0.11",
            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
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
+7 −3
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ public class HierrarchicalDataClassChild extends HierrarchicalDataClassBase {



    // Code below generated by codegen v1.0.9.
    // Code below generated by codegen v1.0.11.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
@@ -120,11 +120,15 @@ public class HierrarchicalDataClassChild extends HierrarchicalDataClassBase {
    };

    @DataClass.Generated(
            time = 1571258915848L,
            codegenVersion = "1.0.9",
            time = 1572630438646L,
            codegenVersion = "1.0.11",
            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
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
+8 −4
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {



    // Code below generated by codegen v1.0.9.
    // Code below generated by codegen v1.0.11.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
@@ -361,7 +361,7 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
        }

        /** Builds the instance. This builder should not be touched after calling this! */
        public ParcelAllTheThingsDataClass build() {
        public @NonNull ParcelAllTheThingsDataClass build() {
            checkNotUsed();
            mBuilderFieldsSet |= 0x100; // Mark builder used

@@ -410,11 +410,15 @@ public class ParcelAllTheThingsDataClass implements Parcelable {
    }

    @DataClass.Generated(
            time = 1571258913802L,
            codegenVersion = "1.0.9",
            time = 1572630436563L,
            codegenVersion = "1.0.11",
            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
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
+9 −5
Original line number Diff line number Diff line
@@ -342,7 +342,7 @@ public final class SampleDataClass implements Parcelable {



    // Code below generated by codegen v1.0.9.
    // Code below generated by codegen v1.0.11.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
@@ -1430,7 +1430,7 @@ public final class SampleDataClass implements Parcelable {
     */
    @SuppressWarnings("WeakerAccess")
    @DataClass.Generated.Member
    public static class Builder {
    public static final class Builder {

        private int mNum;
        private int mNum2;
@@ -1793,7 +1793,7 @@ public final class SampleDataClass implements Parcelable {
        }

        /** Builds the instance. This builder should not be touched after calling this! */
        public SampleDataClass build() {
        public @NonNull SampleDataClass build() {
            checkNotUsed();
            mBuilderFieldsSet |= 0x100000; // Mark builder used

@@ -1872,11 +1872,15 @@ public final class SampleDataClass implements Parcelable {
    }

    @DataClass.Generated(
            time = 1571258911688L,
            codegenVersion = "1.0.9",
            time = 1572630434434L,
            codegenVersion = "1.0.11",
            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
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
Loading