aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2021-05-11 11:44:48 +0900
committerJooyung Han <jooyung@google.com>2021-05-11 02:50:21 +0000
commit09e551ca1b1f88ce771dc2878762e76bb4f50a68 (patch)
treed97896ba9fb6d497128cdd60042b1e33c15f4df7
parent68d18e79205b40b9a97284417f00859ef313968e (diff)
downloadaidl-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.cpp3
-rw-r--r--aidl_unittest.cpp9
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; }");