fix: --checkapi works with enum constants
--checkapi should compare const values with "literal" values, not
with evaluated values because --checkapi task can't resolve imported
types.
--checkapi=equal was relying on "Dump()" which relies on type/value/
resolution.
Now --checkapi=equal dumps const values using literals, not evaluated
values.
Bug: 179950161
Test: m aidl_unittests
Change-Id: I62c84f060036260bfcd9c1020e32715993378e26
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 05008c9..0baf5ba 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -1938,6 +1938,19 @@
EXPECT_TRUE(::android::aidl::check_api(options, io_delegate_));
}
+TEST_F(AidlTest, CheckApiEqual_EnumFieldsWithDefaultValues) {
+ Options options = Options::From("aidl --checkapi=equal old new");
+ const string foo_definition = "package p; parcelable Foo{ p.Enum e = p.Enum.FOO; }";
+ const string enum_definition = "package p; enum Enum { FOO }";
+ io_delegate_.SetFileContents("old/p/Foo.aidl", foo_definition);
+ io_delegate_.SetFileContents("old/p/Enum.aidl", enum_definition);
+ io_delegate_.SetFileContents("new/p/Foo.aidl", foo_definition);
+ io_delegate_.SetFileContents("new/p/Enum.aidl", enum_definition);
+ CaptureStderr();
+ EXPECT_TRUE(::android::aidl::check_api(options, io_delegate_));
+ EXPECT_EQ("", GetCapturedStderr());
+}
+
class AidlTestCompatibleChanges : public AidlTest {
protected:
Options options_ = Options::From("aidl --checkapi old new");