aidl: verify enum backing type
Before, 'boolean' was allowed. Now we restrict this to contain only the
values which are supported.
Fixes: 201586394
Test: aidl_unittests
Change-Id: Id15a87b54ae841238eb41b6b0a8f802b74165222
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 10e8044..a7de571 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -3829,6 +3829,25 @@
EXPECT_EQ(AidlError::BAD_TYPE, error);
}
+TEST_P(AidlTest, FailOnUnsupportedBackingType) {
+ AidlError error;
+ const string expected_stderr =
+ "ERROR: p/TestEnum.aidl:3.35-44: Invalid backing type: boolean. Backing type must be one of: "
+ "byte, int, long\n";
+ CaptureStderr();
+ EXPECT_EQ(nullptr, Parse("p/TestEnum.aidl",
+ R"(package p;
+ @Backing(type="boolean")
+ enum TestEnum {
+ FOO = 0,
+ BAR = 1,
+ }
+ )",
+ typenames_, GetLanguage(), &error));
+ EXPECT_EQ(expected_stderr, GetCapturedStderr());
+ EXPECT_EQ(AidlError::BAD_TYPE, error);
+}
+
TEST_P(AidlTest, UnsupportedBackingAnnotationParam) {
AidlError error;
const string expected_stderr =