diff --git a/libconlang/src/parser.rs b/libconlang/src/parser.rs index 88ff585..3f1925b 100644 --- a/libconlang/src/parser.rs +++ b/libconlang/src/parser.rs @@ -889,7 +889,11 @@ impl<'t> Parser<'t> { /// [Assign] = [Path] ([AssignKind] [Assign]) | [Compare](Binary) pub fn exprkind_assign(&mut self) -> PResult { let head = self.expr_from(Self::exprkind_compare)?; - if !matches!(head.kind, ExprKind::Path(_)) { + // TODO: Formalize the concept of a "place expression" + if !matches!( + head.kind, + ExprKind::Path(_) | ExprKind::Call(_) | ExprKind::Member(_) | ExprKind::Index(_) + ) { return Ok(head.kind); } let Ok(op) = self.assign_op() else {