Skip to content

Commit 545d0b7

Browse files
authored
Fix if-else to be treated as a binary operand (#7783)
1 parent ac74653 commit 545d0b7

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

rust/kcl-lib/src/parsing/parser.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2163,6 +2163,7 @@ fn possible_operands(i: &mut TokenSlice) -> ModalResult<Expr> {
21632163
name.map(Box::new).map(Expr::Name),
21642164
array,
21652165
object.map(Box::new).map(Expr::ObjectExpression),
2166+
if_expr.map(Expr::IfExpression),
21662167
binary_expr_in_parens.map(Box::new).map(Expr::BinaryExpression),
21672168
unnecessarily_bracketed,
21682169
))
@@ -3454,6 +3455,13 @@ mod tests {
34543455
binary_expression.parse(tokens).unwrap();
34553456
}
34563457

3458+
#[test]
3459+
fn parse_binary_operator_with_if_else() {
3460+
let tokens = crate::parsing::token::lex("40 + if true { 2 } else { 0 }", ModuleId::default()).unwrap();
3461+
let tokens = tokens.as_slice();
3462+
binary_expression.parse(tokens).unwrap();
3463+
}
3464+
34573465
#[test]
34583466
fn expression_in_array_index() {
34593467
let tokens = crate::parsing::token::lex("arr[x + 1]", ModuleId::default()).unwrap();

0 commit comments

Comments
 (0)