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();
}
diff --git a/generate_cpp_unittest.cpp b/generate_cpp_unittest.cpp
index 0ecb30d..eb8ede0 100644
--- a/generate_cpp_unittest.cpp
+++ b/generate_cpp_unittest.cpp
@@ -1453,6 +1453,8 @@
namespace internal {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++17-extensions"
template <>
constexpr inline std::array<::android::os::TestEnum, 10> enum_values<::android::os::TestEnum> = {
::android::os::TestEnum::ZERO,
@@ -1466,6 +1468,7 @@
::android::os::TestEnum::NINE,
::android::os::TestEnum::TEN,
};
+#pragma clang diagnostic pop
} // namespace internal
@@ -1519,11 +1522,14 @@
namespace internal {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++17-extensions"
template <>
constexpr inline std::array<::android::os::TestEnum, 2> enum_values<::android::os::TestEnum> = {
::android::os::TestEnum::FOO,
::android::os::TestEnum::BAR,
};
+#pragma clang diagnostic pop
} // namespace internal