diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index b83c9cef2..c9811d04f 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -1129,7 +1129,7 @@ token_precedence :: proc(p: ^Parser, kind: token.Kind) -> int { switch kind { case token.Question: return 1; - case token.Ellipsis: + case token.Ellipsis, token.Range_Half: if !p.allow_range { return 0; } diff --git a/core/odin/token/token.odin b/core/odin/token/token.odin index 7e985d46d..8ce98d1d9 100644 --- a/core/odin/token/token.odin +++ b/core/odin/token/token.odin @@ -108,6 +108,7 @@ using Kind :: enum u32 { Period, Comma, Ellipsis, + Range_Half, Back_Slash, B_Operator_End, @@ -244,6 +245,7 @@ tokens := [Kind.COUNT]string { ".", ",", "..", + "..<", "\\", "", diff --git a/src/parser.cpp b/src/parser.cpp index a72bd8803..ba2b704f7 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2144,9 +2144,9 @@ Ast *parse_call_expr(AstFile *f, Ast *operand) { } bool prefix_ellipsis = false; - if (is_token_range(f->curr_token)) { + if (f->curr_token.kind == Token_Ellipsis) { prefix_ellipsis = true; - ellipsis = expect_token(f, f->curr_token.kind); + ellipsis = expect_token(f, Token_Ellipsis); } Ast *arg = parse_expr(f, false);