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 =