checkapi: Allow default values for enum-type fields
We recommend to set explicit default values for enum-type fields. But
--checkapi complains about setting a default value even if the value is
zero which is compatible with ""(empty) for enum types.
For aidl_interfaces with versioned snapshots, we can't fix
-Wenum-explicit-default because --checkapi sees it as an incompatible
change to set the default value in the new while the old doesn't set
the default.
Bug: 179853398
Test: aidl_unittests
Change-Id: I11b773f7459100b23944164192379369e305783c
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 8eef049..f1dce8d 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -2165,6 +2165,32 @@
EXPECT_TRUE(::android::aidl::check_api(options_, io_delegate_));
}
+TEST_F(AidlTestCompatibleChanges, CompatibleExplicitDefaults) {
+ io_delegate_.SetFileContents("old/p/Data.aidl",
+ "package p;\n"
+ "parcelable Data {\n"
+ " p.Enum e;\n"
+ "}");
+ io_delegate_.SetFileContents("old/p/Enum.aidl",
+ "package p;\n"
+ "enum Enum {\n"
+ " FOO = 0,\n"
+ " BAR = 1,\n"
+ "}");
+ io_delegate_.SetFileContents("new/p/Data.aidl",
+ "package p;\n"
+ "parcelable Data {\n"
+ " p.Enum e = p.Enum.FOO;\n"
+ "}");
+ io_delegate_.SetFileContents("new/p/Enum.aidl",
+ "package p;\n"
+ "enum Enum {\n"
+ " FOO = 0,\n"
+ " BAR = 1,\n"
+ "}");
+ EXPECT_TRUE(::android::aidl::check_api(options_, io_delegate_));
+}
+
class AidlTestIncompatibleChanges : public AidlTest {
protected:
Options options_ = Options::From("aidl --checkapi old new");