mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +00:00
use record for PrecedenceConflict
This commit is contained in:
parent
c2da776ff4
commit
d22acb521e
6 changed files with 27 additions and 16 deletions
|
@ -720,7 +720,12 @@ pub fn canonicalize_expr<'a>(
|
|||
)
|
||||
}
|
||||
|
||||
ast::Expr::PrecedenceConflict(whole_region, binop1, binop2, _expr) => {
|
||||
ast::Expr::PrecedenceConflict {
|
||||
whole_region,
|
||||
binop1,
|
||||
binop2,
|
||||
expr: _,
|
||||
} => {
|
||||
use roc_problem::can::RuntimeError::*;
|
||||
|
||||
let problem = PrecedenceProblem::BothNonAssociative(*whole_region, *binop1, *binop2);
|
||||
|
|
|
@ -117,8 +117,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(_)
|
||||
|
@ -517,12 +517,12 @@ fn desugar_bin_op<'a>(arena: &'a Bump, loc_expr: &'a Located<Expr<'_>>) -> &'a L
|
|||
},
|
||||
);
|
||||
let region = broken_expr.region;
|
||||
let value = Expr::PrecedenceConflict(
|
||||
loc_expr.region,
|
||||
stack_op,
|
||||
bad_op,
|
||||
arena.alloc(broken_expr),
|
||||
);
|
||||
let value = Expr::PrecedenceConflict {
|
||||
whole_region: loc_expr.region,
|
||||
binop1: stack_op,
|
||||
binop2: bad_op,
|
||||
expr: arena.alloc(broken_expr),
|
||||
};
|
||||
|
||||
return arena.alloc(Located { region, value });
|
||||
}
|
||||
|
|
|
@ -74,9 +74,10 @@ impl<'a> Formattable<'a> for Expr<'a> {
|
|||
next_is_multiline_bin_op || loc_left.is_multiline() || loc_right.is_multiline()
|
||||
}
|
||||
|
||||
UnaryOp(loc_subexpr, _) | PrecedenceConflict(_, _, _, loc_subexpr) => {
|
||||
loc_subexpr.is_multiline()
|
||||
}
|
||||
UnaryOp(loc_subexpr, _)
|
||||
| PrecedenceConflict {
|
||||
expr: loc_subexpr, ..
|
||||
} => loc_subexpr.is_multiline(),
|
||||
|
||||
ParensAround(subexpr) | Nested(subexpr) => subexpr.is_multiline(),
|
||||
|
||||
|
@ -316,7 +317,7 @@ impl<'a> Formattable<'a> for Expr<'a> {
|
|||
}
|
||||
MalformedIdent(_, _) => {}
|
||||
MalformedClosure => {}
|
||||
PrecedenceConflict(_, _, _, _) => {}
|
||||
PrecedenceConflict { .. } => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -155,7 +155,12 @@ pub enum Expr<'a> {
|
|||
MalformedClosure,
|
||||
// Both operators were non-associative, e.g. (True == False == False).
|
||||
// We should tell the author to disambiguate by grouping them with parens.
|
||||
PrecedenceConflict(Region, Loc<BinOp>, Loc<BinOp>, &'a Loc<Expr<'a>>),
|
||||
PrecedenceConflict {
|
||||
whole_region: Region,
|
||||
binop1: Loc<BinOp>,
|
||||
binop2: Loc<BinOp>,
|
||||
expr: &'a Loc<Expr<'a>>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
|
|
|
@ -1389,7 +1389,7 @@ fn expr_to_pattern_help<'a>(arena: &'a Bump, expr: &Expr<'a>) -> Result<Pattern<
|
|||
| Expr::If(_, _)
|
||||
| Expr::When(_, _)
|
||||
| Expr::MalformedClosure
|
||||
| Expr::PrecedenceConflict(_, _, _, _)
|
||||
| Expr::PrecedenceConflict { .. }
|
||||
| Expr::Record {
|
||||
update: Some(_), ..
|
||||
}
|
||||
|
|
|
@ -779,7 +779,7 @@ pub fn to_expr2<'a>(
|
|||
(expr, output)
|
||||
}
|
||||
|
||||
PrecedenceConflict(_whole_region, _binop1, _binop2, _expr) => {
|
||||
PrecedenceConflict { .. } => {
|
||||
// use roc_problem::can::RuntimeError::*;
|
||||
//
|
||||
// let problem = PrecedenceProblem::BothNonAssociative(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue