checkapi: use ValueString to compare const values
Comparison based on Literal() was a work around because checkapi could't
rely on type/ref resolution. Now, checkapi can use more robust
ValueString() to compare const values.
This reverts 02a11bee998bda59cd420e2c8dd57f3684ee288a and
fdaae1d5ff8601ba0c22d3ebda463a68f85dfded partially.
Bug: n/a
Test: aidl_unittests
Change-Id: I223843cdfe44b7f129b28cf1e4c1d313225db4e6
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 196e396..0218561 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -3757,6 +3757,20 @@
err);
}
+TEST_F(AidlTest, EnumDefaultShouldBeEnumerators_RejectsNumericValue) {
+ io_delegate_.SetFileContents("a/p/Enum.aidl", "package p; enum Enum { FOO = 1, BAR = 2}");
+ io_delegate_.SetFileContents("a/p/Foo.aidl", R"(
+package p;
+import p.Enum;
+parcelable Foo {
+ Enum e = 1;
+})");
+ CaptureStderr();
+ auto options = Options::From("aidl -I a --lang java -o out -h out a/p/Foo.aidl");
+ EXPECT_EQ(1, aidl::compile_aidl(options, io_delegate_));
+ EXPECT_THAT(GetCapturedStderr(), HasSubstr("Invalid value (1) for enum p.Enum"));
+}
+
TEST_P(AidlTest, DefaultWithEmptyArray) {
io_delegate_.SetFileContents("a/p/Foo.aidl", "package p; parcelable Foo { p.Bar[] bars = {}; }");
io_delegate_.SetFileContents("a/p/Bar.aidl", "package p; parcelable Bar { }");