Add compiler pragma for enum_values specialization
`inline variable` requires C++17 which is not available for some
targets.
Test: atest --host aidl_unittests
atest CtsNdkBinderTestCases
Bug: 146402634
Change-Id: Ie2d7e56bb2178d1b79cc1af5bcc73ea8a424a375
diff --git a/aidl_to_cpp_common.cpp b/aidl_to_cpp_common.cpp
index 7c56611..d1aeb2e 100644
--- a/aidl_to_cpp_common.cpp
+++ b/aidl_to_cpp_common.cpp
@@ -363,6 +363,8 @@
"::" + enum_decl.GetName();
const auto size = enum_decl.GetEnumerators().size();
std::ostringstream code;
+ code << "#pragma clang diagnostic push\n";
+ code << "#pragma clang diagnostic ignored \"-Wc++17-extensions\"\n";
code << "template <>\n";
code << "constexpr inline std::array<" << fq_name << ", " << size << "> enum_values<" << fq_name
<< "> = {\n";
@@ -370,6 +372,7 @@
code << " " << fq_name << "::" << enumerator->GetName() << ",\n";
}
code << "};\n";
+ code << "#pragma clang diagnostic pop\n";
return code.str();
}