Forbid @nullable ParcelableHolder
ParcelableHolder is supposed to be always initialized due to its
stability value. So, restrict using @nullable for ParcelableHolder
Bug: 146611855
Bug: 170807936
Test: atest aidl_unittests
Change-Id: I4b2b3a837b02161a04462e075d76a42a8a9e6b8d
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index e58c9ce..654e5e0 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -1343,6 +1343,24 @@
GetCapturedStderr());
}
+TEST_P(AidlTest, RejectNullableParcelableHolderField) {
+ io_delegate_.SetFileContents("Foo.aidl", "parcelable Foo { @nullable ParcelableHolder ext; }");
+ Options options =
+ Options::From("aidl Foo.aidl --lang=" + Options::LanguageToString(GetLanguage()));
+ const string expected_stderr = "ERROR: Foo.aidl:1.27-44: ParcelableHolder cannot be nullable.\n";
+ CaptureStderr();
+ EXPECT_NE(0, ::android::aidl::compile_aidl(options, io_delegate_));
+ if (GetLanguage() == Options::Language::RUST) {
+ EXPECT_EQ(
+ "ERROR: Foo.aidl:1.27-44: ParcelableHolder cannot be nullable.\n"
+ "ERROR: Foo.aidl:1.27-44: The Rust backend does not support ParcelableHolder "
+ "yet.\n",
+ GetCapturedStderr());
+ return;
+ }
+ EXPECT_EQ(expected_stderr, GetCapturedStderr());
+}
+
TEST_F(AidlTest, ApiDump) {
io_delegate_.SetFileContents(
"foo/bar/IFoo.aidl",