From 3224869c2988be7125b13551b20ee9bb5496bc6c Mon Sep 17 00:00:00 2001 From: DanielGavin Date: Wed, 20 Jan 2021 16:10:16 +0100 Subject: [PATCH] handle expr is null in parse_binary_expr --- core/odin/parser/parser.odin | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index 84835bda9..e5d74f049 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -3064,7 +3064,13 @@ parse_unary_expr :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { return parse_atom_expr(p, parse_operand(p, lhs), lhs); } parse_binary_expr :: proc(p: ^Parser, lhs: bool, prec_in: int) -> ^ast.Expr { + start_pos := p.curr_tok.pos; expr := parse_unary_expr(p, lhs); + + if expr == nil { + return ast.new(ast.Bad_Expr, start_pos, end_pos(p.prev_tok)); + } + for prec := token_precedence(p, p.curr_tok.kind); prec >= prec_in; prec -= 1 { for { op := p.curr_tok;