aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.cpp
diff options
context:
space:
mode:
authorMichael Dusan <michael.dusan@gmail.com>2020-04-01 12:47:50 -0400
committerAndrew Kelley <andrew@ziglang.org>2020-04-01 15:56:00 -0400
commit212e2354b8ab631995b0c25f7cf1d9a3e01fac57 (patch)
treeb5d42acd5308378b995bc97b191c8a4efd240a43 /src/tokenizer.cpp
parent0f1f56bb69610ea424ac311db72510b474249095 (diff)
downloadzig-212e2354b8ab631995b0c25f7cf1d9a3e01fac57.tar.gz
zig-212e2354b8ab631995b0c25f7cf1d9a3e01fac57.zip
stage1: make C++ switch fallthrough an error
Make fallthrough an error when compiler supports it. This requires a new macro that is defined with such compilers to be used as a statement, at all fallthrough sites: switch (...) { case 0: ... ZIG_FALLTHROUGH; case 1: ... break; default: ... break; } If we ever move to C++17 as minimal requirement, then the macro can be replaced with `[[fallthrough]];` at statement sites.
Diffstat (limited to 'src/tokenizer.cpp')
-rw-r--r--src/tokenizer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp
index b4e9d910d9..11432ecac1 100644
--- a/src/tokenizer.cpp
+++ b/src/tokenizer.cpp
@@ -840,6 +840,7 @@ void tokenize(Buf *buf, Tokenization *out) {
t.state = TokenizeStateStart;
continue;
}
+ break;
case TokenizeStateSawSlash:
switch (c) {
case '/':
@@ -1209,7 +1210,7 @@ void tokenize(Buf *buf, Tokenization *out) {
t.is_trailing_underscore = false;
t.state = TokenizeStateNumber;
}
- // fall through
+ ZIG_FALLTHROUGH;
case TokenizeStateNumber:
{
if (c == '_') {
@@ -1291,7 +1292,7 @@ void tokenize(Buf *buf, Tokenization *out) {
t.is_trailing_underscore = false;
t.state = TokenizeStateFloatFraction;
}
- // fall through
+ ZIG_FALLTHROUGH;
case TokenizeStateFloatFraction:
{
if (c == '_') {
@@ -1350,7 +1351,7 @@ void tokenize(Buf *buf, Tokenization *out) {
t.is_trailing_underscore = false;
t.state = TokenizeStateFloatExponentNumber;
}
- // fall through
+ ZIG_FALLTHROUGH;
case TokenizeStateFloatExponentNumber:
{
if (c == '_') {