improve Precedence error message

This commit is contained in:
Folkert 2020-03-31 23:11:35 +02:00
parent d213c7316b
commit 11c8e2bfaa
8 changed files with 257 additions and 40 deletions

View file

@ -582,10 +582,14 @@ pub fn canonicalize_expr<'a>(
)
}
ast::Expr::PrecedenceConflict(binop1, binop2, _expr) => {
ast::Expr::PrecedenceConflict(whole_region, binop1, binop2, _expr) => {
use roc_problem::can::RuntimeError::*;
let problem = PrecedenceProblem::BothNonAssociative(binop1.clone(), binop2.clone());
let problem = PrecedenceProblem::BothNonAssociative(
*whole_region,
binop1.clone(),
binop2.clone(),
);
env.problem(Problem::PrecedenceProblem(problem.clone()));

View file

@ -78,8 +78,8 @@ pub fn desugar_expr<'a>(arena: &'a Bump, loc_expr: &'a Located<Expr<'a>>) -> &'a
| Nested(MalformedIdent(_))
| MalformedClosure
| Nested(MalformedClosure)
| PrecedenceConflict(_, _, _)
| Nested(PrecedenceConflict(_, _, _))
| PrecedenceConflict(_, _, _, _)
| Nested(PrecedenceConflict(_, _, _, _))
| GlobalTag(_)
| Nested(GlobalTag(_))
| PrivateTag(_)
@ -418,8 +418,9 @@ fn desugar_bin_op<'a>(arena: &'a Bump, loc_expr: &'a Located<Expr<'_>>) -> &'a L
);
let region = broken_expr.region;
let value = Expr::PrecedenceConflict(
bad_op,
loc_expr.region,
stack_op,
bad_op,
arena.alloc(broken_expr),
);