rust/compiler/rustc_parse/src/parser
Mara Bos 755dd14e00
Rollup merge of #78836 - fanzier:struct-and-slice-destructuring, r=petrochenkov
Implement destructuring assignment for structs and slices

This is the second step towards implementing destructuring assignment (RFC: rust-lang/rfcs#2909, tracking issue: #71126). This PR is the second part of #71156, which was split up to allow for easier review.

Note that the first PR (#78748) is not merged yet, so it is included as the first commit in this one. I thought this would allow the review to start earlier because I have some time this weekend to respond to reviews. If ``@petrochenkov`` prefers to wait until the first PR is merged, I totally understand, of course.

This PR implements destructuring assignment for (tuple) structs and slices. In order to do this, the following *parser change* was necessary: struct expressions are not required to have a base expression, i.e. `Struct { a: 1, .. }` becomes legal (in order to act like a struct pattern).

Unfortunately, this PR slightly regresses the diagnostics implemented in #77283. However, it is only a missing help message in `src/test/ui/issues/issue-77218.rs`. Other instances of this diagnostic are not affected. Since I don't exactly understand how this help message works and how to fix it yet, I was hoping it's OK to regress this temporarily and fix it in a follow-up PR.

Thanks to ``@varkor`` who helped with the implementation, particularly around the struct rest changes.

r? ``@petrochenkov``
2020-11-12 19:46:09 +01:00
..
attr.rs Do not collect tokens for doc comments 2020-11-09 01:47:11 +03:00
diagnostics.rs Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
expr.rs Implement destructuring assignment for structs and slices 2020-11-11 12:10:52 +00:00
generics.rs mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
item.rs Use reparsed TokenStream if we captured any inner attributes 2020-11-02 13:22:03 -05:00
mod.rs parser: Cleanup LazyTokenStream and avoid some clones 2020-10-31 01:56:34 +03:00
nonterminal.rs Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
pat.rs rustc_ast: visit_mac -> visit_mac_call 2020-11-03 23:39:51 +03:00
path.rs Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
stmt.rs Detect blocks that could be struct expr bodies 2020-10-07 13:40:52 -07:00
ty.rs Tweak invalid fn header and body parsing 2020-10-25 18:34:14 -07:00