diff --git a/Makefile b/Makefile index 1d3d9df5d..313f02ede 100644 --- a/Makefile +++ b/Makefile @@ -68,4 +68,4 @@ endif include mk/lib.mk -GLOBAL_CXXFLAGS += -g -Wall -include $(buildprefix)config.h -std=c++2a -I src +GLOBAL_CXXFLAGS += -g -Wall -Wimplicit-fallthrough -include $(buildprefix)config.h -std=c++2a -I src diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index df2cbd06f..ced1c4c39 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -20,6 +20,12 @@ #pragma clang diagnostic ignored "-Wunneeded-internal-declaration" #endif +// yacc generates code that uses unannotated fallthrough. +#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wimplicit-fallthrough" +#endif + #include #include "nixexpr.hh" diff --git a/tests/unit/libstore-support/tests/path.cc b/tests/unit/libstore-support/tests/path.cc index e5f169e94..8bf501ab6 100644 --- a/tests/unit/libstore-support/tests/path.cc +++ b/tests/unit/libstore-support/tests/path.cc @@ -33,6 +33,7 @@ Gen Arbitrary::arbitrary() switch (auto i = *gen::inRange(0, 10 + 2 * 26 + 6)) { case 0 ... 9: pre += '0' + i; + break; case 10 ... 35: pre += 'A' + (i - 10); break; @@ -52,6 +53,7 @@ Gen Arbitrary::arbitrary() pre += '.'; break; } + [[fallthrough]]; case 65: pre += '_'; break;