| ... | ... | @@ -223,6 +223,7 @@ enum TokenizeState { |
| 223 | 223 | TokenizeStateSawGreaterThanGreaterThan, |
| 224 | 224 | TokenizeStateSawDot, |
| 225 | 225 | TokenizeStateSawDotDot, |
| 226 | TokenizeStateSawDotStar, |
| 226 | 227 | TokenizeStateSawAtSign, |
| 227 | 228 | TokenizeStateCharCode, |
| 228 | 229 | TokenizeStateError, |
| ... | ... | @@ -566,9 +567,8 @@ void tokenize(Buf *buf, Tokenization *out) { |
| 566 | 567 | set_token_id(&t, t.cur_tok, TokenIdEllipsis2); |
| 567 | 568 | break; |
| 568 | 569 | case '*': |
| 569 | | t.state = TokenizeStateStart; |
| 570 | t.state = TokenizeStateSawDotStar; |
| 570 | 571 | set_token_id(&t, t.cur_tok, TokenIdDotStar); |
| 571 | | end_token(&t); |
| 572 | 572 | break; |
| 573 | 573 | default: |
| 574 | 574 | t.pos -= 1; |
| ... | ... | @@ -591,6 +591,18 @@ void tokenize(Buf *buf, Tokenization *out) { |
| 591 | 591 | continue; |
| 592 | 592 | } |
| 593 | 593 | break; |
| 594 | case TokenizeStateSawDotStar: |
| 595 | switch (c) { |
| 596 | case '*': |
| 597 | tokenize_error(&t, "`.*` can't be followed by `*`. Are you missing a space?"); |
| 598 | break; |
| 599 | default: |
| 600 | t.pos -= 1; |
| 601 | end_token(&t); |
| 602 | t.state = TokenizeStateStart; |
| 603 | continue; |
| 604 | } |
| 605 | break; |
| 594 | 606 | case TokenizeStateSawGreaterThan: |
| 595 | 607 | switch (c) { |
| 596 | 608 | case '=': |