authorgravatar for tssund93@gmail.comTravis <tssund93@gmail.com> 2020-10-28 16:44:39-05:00
committergravatar for tssund93@gmail.comTravis <tssund93@gmail.com> 2020-10-29 12:03:45-05:00
log069aee149546c9394733b128f4a5d5b3f6f6a984
tree028465c8fa37d95980d9ae0f1a2082aceb78ad24
parentb3314a8be6c902c4da3ccef4b29f2ca3ae22061c

don't allow a token starting with an asterisk directly following .*


1 files changed, 14 insertions(+), 2 deletions(-)

src/stage1/tokenizer.cpp+14-2
...@@ -223,6 +223,7 @@ enum TokenizeState {...@@ -223,6 +223,7 @@ enum TokenizeState {
223 TokenizeStateSawGreaterThanGreaterThan,223 TokenizeStateSawGreaterThanGreaterThan,
224 TokenizeStateSawDot,224 TokenizeStateSawDot,
225 TokenizeStateSawDotDot,225 TokenizeStateSawDotDot,
226 TokenizeStateSawDotStar,
226 TokenizeStateSawAtSign,227 TokenizeStateSawAtSign,
227 TokenizeStateCharCode,228 TokenizeStateCharCode,
228 TokenizeStateError,229 TokenizeStateError,
...@@ -566,9 +567,8 @@ void tokenize(Buf *buf, Tokenization *out) {...@@ -566,9 +567,8 @@ void tokenize(Buf *buf, Tokenization *out) {
566 set_token_id(&t, t.cur_tok, TokenIdEllipsis2);567 set_token_id(&t, t.cur_tok, TokenIdEllipsis2);
567 break;568 break;
568 case '*':569 case '*':
569 t.state = TokenizeStateStart;570 t.state = TokenizeStateSawDotStar;
570 set_token_id(&t, t.cur_tok, TokenIdDotStar);571 set_token_id(&t, t.cur_tok, TokenIdDotStar);
571 end_token(&t);
572 break;572 break;
573 default:573 default:
574 t.pos -= 1;574 t.pos -= 1;
...@@ -591,6 +591,18 @@ void tokenize(Buf *buf, Tokenization *out) {...@@ -591,6 +591,18 @@ void tokenize(Buf *buf, Tokenization *out) {
591 continue;591 continue;
592 }592 }
593 break;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 case TokenizeStateSawGreaterThan:606 case TokenizeStateSawGreaterThan:
595 switch (c) {607 switch (c) {
596 case '=':608 case '=':