From 1eee74b21174688966f80e8a8ce29b27ee83f33d Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Mon, 21 Apr 2025 12:26:06 -0300 Subject: [PATCH] parser: fix range expr precedence on compound logical and operator (fix #24252) (#24275) --- vlib/v/parser/expr.v | 2 +- vlib/v/tests/range_expr_logical_and_test.v | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/range_expr_logical_and_test.v diff --git a/vlib/v/parser/expr.v b/vlib/v/parser/expr.v index 54f1eb5c6..707b6e3d5 100644 --- a/vlib/v/parser/expr.v +++ b/vlib/v/parser/expr.v @@ -804,7 +804,7 @@ fn (mut p Parser) infix_expr(left ast.Expr) ast.Expr { right = ast.RangeExpr{ low: right has_low: true - high: p.expr(0) + high: p.expr(int(token.Precedence.in_as)) has_high: true pos: pos_high is_gated: false diff --git a/vlib/v/tests/range_expr_logical_and_test.v b/vlib/v/tests/range_expr_logical_and_test.v new file mode 100644 index 000000000..1d544753d --- /dev/null +++ b/vlib/v/tests/range_expr_logical_and_test.v @@ -0,0 +1,14 @@ +module main + +fn bang(a int, b int) int { + if a in 0..9 && b in 0..9 { + return a + b + } else { + return 0 + } +} + +fn test_main() { + assert bang(1, 2) == 3 + assert bang(10, 1) == 0 +} -- 2.39.5