Userland: Locally suppress -Wc99-designator and re-enable globally

There's only two places where we're using the C99 feature of array
designated initalizers. This feature seemingly wasn't included with
C++20 designated initalizers for classes and structs. The only two
places we were using this feature are suitably old and isolated that
it makes sense to just suppress the warning at the usage sites while
discouraging future array designated intializers in new code.
This commit is contained in:
Andrew Kaster 2022-01-03 01:52:37 -07:00 committed by Brian Gianforcaro
parent c8cfd6661a
commit a103a85ae6
3 changed files with 19 additions and 1 deletions

View file

@ -197,7 +197,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang$")
add_compile_options(-Wno-user-defined-literals)
add_compile_options(-Wno-atomic-alignment)
add_compile_options(-Wno-c99-designator)
add_compile_options(-Wno-implicit-const-int-float-conversion)
add_compile_options(-Wno-null-pointer-subtraction)
add_compile_options(-Wno-tautological-constant-out-of-range-compare)

View file

@ -21,6 +21,11 @@ struct KeyPosition {
#define KEY_COUNT 63
#ifdef __clang__
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wc99-designator"
#endif
struct KeyPosition keys[KEY_COUNT] = {
// clang-format off
[ 0] = { 0, 0, 0, 0, 0, false, 0, ""},
@ -93,3 +98,7 @@ struct KeyPosition keys[KEY_COUNT] = {
[62] = {0xE01D, 689, 208, 74, 50, false, 0, "right ctrl"}
// clang-format on
};
#ifdef __clang__
# pragma clang diagnostic pop
#endif

View file

@ -46,6 +46,11 @@
# endif
# include <sys/cdefs.h>
# ifdef __clang__
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wc99-designator"
# endif
__BEGIN_DECLS
static const cc_t ttydefchars[NCCS] = {
[VINTR] = CINTR,
@ -66,5 +71,10 @@ static const cc_t ttydefchars[NCCS] = {
[VLNEXT] = CLNEXT,
[VEOL2] = CEOL2
};
# ifdef __clang__
# pragma clang diagnostic pop
# endif
__END_DECLS
#endif