[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
This commit is contained in:
Eugene Susla
2019-10-22 17:32:08 -07:00
parent 4a0b1750ef
commit 322e8b1772
19 changed files with 1162 additions and 363 deletions

View File

@@ -243,6 +243,26 @@ public class SampleDataClassTest {
assertEquals(instance.toString(), unparceledInstance.toString());
}
@Test
public void testNestedDataClasses_notMangledWhenParceled() {
assertEqualsAfterParcelling(
new SampleWithNestedDataClasses.NestedDataClass("1"),
SampleWithNestedDataClasses.NestedDataClass.CREATOR);
assertEqualsAfterParcelling(
new SampleWithNestedDataClasses.NestedDataClass2("2"),
SampleWithNestedDataClasses.NestedDataClass2.CREATOR);
assertEqualsAfterParcelling(
new SampleWithNestedDataClasses.NestedDataClass2.NestedDataClass3(3),
SampleWithNestedDataClasses.NestedDataClass2.NestedDataClass3.CREATOR);
}
private static <T extends Parcelable> void assertEqualsAfterParcelling(
T p, Parcelable.Creator<T> creator) {
assertEquals(p, parcelAndUnparcel(p, creator));
}
private static <T extends Parcelable> T parcelAndUnparcel(
T original, Parcelable.Creator<T> creator) {
Parcel p = Parcel.obtain();