Parse assignment expressions as AssignOp
diff --git a/src/expr.rs b/src/expr.rs
index f1077fe..7ba8fd2 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -1122,12 +1122,21 @@
break;
}
}
- lhs = Expr::Binary(ExprBinary {
- attrs: Vec::new(),
- left: Box::new(lhs),
- op: op,
- right: Box::new(rhs),
- });
+ lhs = if precedence == Precedence::Assign {
+ Expr::AssignOp(ExprAssignOp {
+ attrs: Vec::new(),
+ left: Box::new(lhs),
+ op: op,
+ right: Box::new(rhs),
+ })
+ } else {
+ Expr::Binary(ExprBinary {
+ attrs: Vec::new(),
+ left: Box::new(lhs),
+ op: op,
+ right: Box::new(rhs),
+ })
+ };
} else if Precedence::Assign >= base
&& input.peek(Token![=])
&& !input.peek(Token![==])