diff options
| author | kristopher tate <kris.tate+github@gmail.com> | 2019-01-26 05:10:40 +0900 |
|---|---|---|
| committer | Jimmi Holst Christensen <jimmi@ziglang.org> | 2019-01-25 21:10:40 +0100 |
| commit | 5bf9ffdc5be02e67b57fe9398ad9d13147bfb0c8 (patch) | |
| tree | f8c68dbdabe3534f80134f755ec4b1ff007bdc22 /src/tokenizer.cpp | |
| parent | 3bec3b9f9ba49bbc2e7244737c50bdbaa12a6b14 (diff) | |
| download | zig-5bf9ffdc5be02e67b57fe9398ad9d13147bfb0c8.tar.gz zig-5bf9ffdc5be02e67b57fe9398ad9d13147bfb0c8.zip | |
Hint at use of and/or when &&/|| is improperly used (#1886)
Diffstat (limited to 'src/tokenizer.cpp')
| -rw-r--r-- | src/tokenizer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 921ee4de09..464412d443 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -199,6 +199,7 @@ enum TokenizeState { TokenizeStateSawDash, TokenizeStateSawMinusPercent, TokenizeStateSawAmpersand, + TokenizeStateSawAmpersandAmpersand, TokenizeStateSawCaret, TokenizeStateSawBar, TokenizeStateSawBarBar, @@ -891,6 +892,10 @@ void tokenize(Buf *buf, Tokenization *out) { end_token(&t); t.state = TokenizeStateStart; break; + case '&': + set_token_id(&t, t.cur_tok, TokenIdAmpersandAmpersand); + t.state = TokenizeStateSawAmpersandAmpersand; + break; default: t.pos -= 1; end_token(&t); @@ -898,6 +903,11 @@ void tokenize(Buf *buf, Tokenization *out) { continue; } break; + case TokenizeStateSawAmpersandAmpersand: + t.pos -= 1; + end_token(&t); + t.state = TokenizeStateStart; + continue; case TokenizeStateSawCaret: switch (c) { case '=': @@ -1468,6 +1478,7 @@ void tokenize(Buf *buf, Tokenization *out) { case TokenizeStateSawPlus: case TokenizeStateSawDash: case TokenizeStateSawAmpersand: + case TokenizeStateSawAmpersandAmpersand: case TokenizeStateSawCaret: case TokenizeStateSawBar: case TokenizeStateSawEq: @@ -1515,6 +1526,7 @@ void tokenize(Buf *buf, Tokenization *out) { const char * token_name(TokenId id) { switch (id) { case TokenIdAmpersand: return "&"; + case TokenIdAmpersandAmpersand: return "&&"; case TokenIdArrow: return "->"; case TokenIdAtSign: return "@"; case TokenIdBang: return "!"; |
