aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-01-29 22:28:33 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-01-29 22:29:56 -0500
commit9c328b42916d463465b134457c7f13b5c65da406 (patch)
treea7c7a12ffcfe140c5912a09d742aa62180508536 /src/tokenizer.cpp
parent5bf9ffdc5be02e67b57fe9398ad9d13147bfb0c8 (diff)
downloadzig-9c328b42916d463465b134457c7f13b5c65da406.tar.gz
zig-9c328b42916d463465b134457c7f13b5c65da406.zip
simpler implementation of `&&` and `||` hints
This accomplishes the same goal, but with less changes, so that I can backport copy elision stuff easier.
Diffstat (limited to 'src/tokenizer.cpp')
-rw-r--r--src/tokenizer.cpp15
1 files changed, 3 insertions, 12 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp
index 464412d443..6215541876 100644
--- a/src/tokenizer.cpp
+++ b/src/tokenizer.cpp
@@ -199,7 +199,6 @@ enum TokenizeState {
TokenizeStateSawDash,
TokenizeStateSawMinusPercent,
TokenizeStateSawAmpersand,
- TokenizeStateSawAmpersandAmpersand,
TokenizeStateSawCaret,
TokenizeStateSawBar,
TokenizeStateSawBarBar,
@@ -887,15 +886,14 @@ void tokenize(Buf *buf, Tokenization *out) {
break;
case TokenizeStateSawAmpersand:
switch (c) {
+ case '&':
+ tokenize_error(&t, "`&&` is invalid. Note that `and` is boolean AND.");
+ break;
case '=':
set_token_id(&t, t.cur_tok, TokenIdBitAndEq);
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);
@@ -903,11 +901,6 @@ 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 '=':
@@ -1478,7 +1471,6 @@ void tokenize(Buf *buf, Tokenization *out) {
case TokenizeStateSawPlus:
case TokenizeStateSawDash:
case TokenizeStateSawAmpersand:
- case TokenizeStateSawAmpersandAmpersand:
case TokenizeStateSawCaret:
case TokenizeStateSawBar:
case TokenizeStateSawEq:
@@ -1526,7 +1518,6 @@ 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 "!";