no empty binops

This commit is contained in:
Folkert 2021-03-20 21:56:22 +01:00
parent d5ec66244f
commit dcf1481ca1
2 changed files with 9 additions and 19 deletions

View file

@ -418,10 +418,14 @@ fn parse_expr_final<'a>(
) -> ParseResult<'a, Expr<'a>, EExpr<'a>> { ) -> ParseResult<'a, Expr<'a>, EExpr<'a>> {
let right_arg = to_call(arena, expr_state.arguments, expr_state.expr); let right_arg = to_call(arena, expr_state.arguments, expr_state.expr);
let expr = Expr::BinOps( let expr = if expr_state.operators.is_empty() {
expr_state.operators.into_bump_slice(), right_arg.value
arena.alloc(right_arg), } else {
); Expr::BinOps(
expr_state.operators.into_bump_slice(),
arena.alloc(right_arg),
)
};
Ok((MadeProgress, expr, state)) Ok((MadeProgress, expr, state))
} }
@ -1256,20 +1260,7 @@ fn parse_expr_end<'a>(
// roll back space parsing // roll back space parsing
let state = expr_state.initial; let state = expr_state.initial;
if expr_state.operators.is_empty() { parse_expr_final(expr_state, arena, state)
let expr = to_call(arena, expr_state.arguments, expr_state.expr);
Ok((MadeProgress, expr.value, state))
} else {
let right_arg = to_call(arena, expr_state.arguments, expr_state.expr);
let expr = Expr::BinOps(
expr_state.operators.into_bump_slice(),
arena.alloc(right_arg),
);
Ok((MadeProgress, expr, state))
}
} }
} }
} }

View file

@ -65,7 +65,6 @@ mod test_reporting {
problems: can_problems, problems: can_problems,
.. ..
} = can_expr(arena, expr_src)?; } = can_expr(arena, expr_src)?;
dbg!(&loc_expr);
let mut subs = Subs::new(var_store.into()); let mut subs = Subs::new(var_store.into());
for (var, name) in output.introduced_variables.name_by_var { for (var, name) in output.introduced_variables.name_by_var {