diff options
author | Jooyung Han <jooyung@google.com> | 2021-05-11 11:44:48 +0900 |
---|---|---|
committer | Jooyung Han <jooyung@google.com> | 2021-05-11 02:50:21 +0000 |
commit | 09e551ca1b1f88ce771dc2878762e76bb4f50a68 (patch) | |
tree | d97896ba9fb6d497128cdd60042b1e33c15f4df7 | |
parent | 68d18e79205b40b9a97284417f00859ef313968e (diff) | |
download | aidl-09e551ca1b1f88ce771dc2878762e76bb4f50a68.tar.gz |
JavaOnlyImmutable paracelable with enum fields
enum types are okay to be in @JavaOnlyImmutable parcelables.
Bug: 187769988
Test: aidl_unittests
Change-Id: Iff9ee20ad599ce246ed90c5f984aef4f6f24910e
-rw-r--r-- | aidl_typenames.cpp | 3 | ||||
-rw-r--r-- | aidl_unittest.cpp | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/aidl_typenames.cpp b/aidl_typenames.cpp index 693899d6..84404637 100644 --- a/aidl_typenames.cpp +++ b/aidl_typenames.cpp @@ -260,6 +260,9 @@ bool AidlTypenames::CanBeJavaOnlyImmutable(const AidlTypeSpecifier& type) const "type, and String."; return false; } + if (t->AsEnumDeclaration()) { + return true; + } return t->IsJavaOnlyImmutable(); } diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp index 1e81de74..c3c04dfb 100644 --- a/aidl_unittest.cpp +++ b/aidl_unittest.cpp @@ -3202,6 +3202,15 @@ TEST_F(AidlTest, RejectMutableParcelableFromJavaOnlyImmutableParcelable) { EXPECT_EQ(expected_error, GetCapturedStderr()); } +TEST_F(AidlTest, JavaOnlyImmutableParcelableWithEnumFields) { + io_delegate_.SetFileContents("Foo.aidl", "@JavaOnlyImmutable parcelable Foo { Bar bar; }"); + io_delegate_.SetFileContents("Bar.aidl", "enum Bar { FOO }"); + CaptureStderr(); + Options options = Options::From("aidl --lang=java Foo.aidl -I ."); + EXPECT_EQ(0, ::android::aidl::compile_aidl(options, io_delegate_)); + EXPECT_EQ("", GetCapturedStderr()); +} + TEST_F(AidlTest, RejectMutableParcelableFromJavaOnlyImmutableUnion) { io_delegate_.SetFileContents("Foo.aidl", "@JavaOnlyImmutable union Foo { Bar bar; }"); io_delegate_.SetFileContents("Bar.aidl", "parcelable Bar { String a; }"); |