Parse destructuring assignment

The only patterns we should parse are `..` in structs and `_`: the rest are either not supported or already valid expressions.
This commit is contained in:
Chayim Refael Friedman 2022-02-24 08:49:47 +00:00 committed by GitHub
parent ab2af50655
commit d9f0731bd2
18 changed files with 543 additions and 218 deletions

View file

@ -593,7 +593,16 @@ pub(crate) fn record_expr_field_list(p: &mut Parser) {
T![.] if p.at(T![..]) => {
m.abandon(p);
p.bump(T![..]);
expr(p);
// test destructuring_assignment_struct_rest_pattern
// fn foo() {
// S { .. } = S {};
// }
// We permit `.. }` on the left-hand side of a destructuring assignment.
if !p.at(T!['}']) {
expr(p);
}
}
T!['{'] => {
error_block(p, "expected a field");