diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index fcfca0121..5e681728d 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -2553,6 +2553,17 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { for p.curr_tok.kind != .Close_Brace && p.curr_tok.kind != .EOF { elem := parse_expr(p, false) + + if p.curr_tok.kind == .Where { + tok_where := expect_token(p, .Where) + cond := parse_expr(p, false) + + be := ast.new(ast.Binary_Expr, elem.pos, end_pos(p.prev_tok)) + be.left = elem + be.op = tok_where + be.right = cond + elem = be + } append(&args, elem) allow_token(p, .Comma) or_break