diff options
author | eldritch horrors <pennae@lix.systems> | 2024-03-07 07:12:20 +0100 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-03-07 00:11:12 -0700 |
commit | 1342c8f18e48afd1577cfdc319c254ce7c42637e (patch) | |
tree | c054031cab85d1973000e1f153a6ff6b1874f2e6 | |
parent | 0d9a043f4365100c5b451b6476edb2b9ab09e19b (diff) |
Merge pull request #10074 from lf-/jade/ban-implicit-fallthrough
Warn on implicit switch case fallthrough
(cherry picked from commit 21282c3c204597641402c6bcff8fc9ee7bc31fa1)
Change-Id: I5ebbdfb6c037d2c55254f37dd391c07c2ce7443e
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/libexpr/lexer.l | 6 | ||||
-rw-r--r-- | tests/unit/libstore-support/tests/path.cc | 2 |
3 files changed, 9 insertions, 1 deletions
@@ -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 <boost/lexical_cast.hpp> #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<StorePathName> Arbitrary<StorePathName>::arbitrary() switch (auto i = *gen::inRange<uint8_t>(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<StorePathName> Arbitrary<StorePathName>::arbitrary() pre += '.'; break; } + [[fallthrough]]; case 65: pre += '_'; break; |