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_checkapi.cpp b/aidl_checkapi.cpp
index f07e7e6..de5c9ad 100644
--- a/aidl_checkapi.cpp
+++ b/aidl_checkapi.cpp
@@ -41,10 +41,18 @@
using std::string;
using std::vector;
+struct DumpForEqualityVisitor : DumpVisitor {
+ DumpForEqualityVisitor(CodeWriter& out) : DumpVisitor(out) {}
+
+ void DumpConstantValue(const AidlTypeSpecifier&, const AidlConstantValue& c) {
+ out << c.Literal();
+ }
+};
+
static std::string Dump(const AidlDefinedType& type) {
string code;
CodeWriterPtr out = CodeWriter::ForString(&code);
- DumpVisitor visitor(*out);
+ DumpForEqualityVisitor visitor(*out);
type.DispatchVisit(visitor);
out->Close();
return code;