rust/compiler/rustc_ast_lowering/src
Jonas Schievink f66af28641
Rollup merge of #79016 - fanzier:underscore-expressions, r=petrochenkov
Make `_` an expression, to discard values in destructuring assignments

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

With this PR, an underscore `_` is parsed as an expression but is allowed *only* on the left-hand side of a destructuring assignment. There it simply discards a value, similarly to the wildcard `_` in patterns. For instance,
```rust
(a, _) = (1, 2)
```
will simply assign 1 to `a` and discard the 2. Note that for consistency,
```
_ = foo
```
is also allowed and equivalent to just `foo`.

Thanks to ````@varkor```` who helped with the implementation, particularly around pre-expansion gating.

r? ````@petrochenkov````
2020-11-15 13:39:48 +01:00
..
expr.rs Rollup merge of #79016 - fanzier:underscore-expressions, r=petrochenkov 2020-11-15 13:39:48 +01:00
item.rs Handle and test wildcard arguments 2020-11-12 11:14:29 -05:00
lib.rs Rollup merge of #77802 - jyn514:bootstrap-specific, r=nikomatsakis 2020-11-15 13:39:43 +01:00
pat.rs Implement destructuring assignment for tuples 2020-11-07 13:17:19 +00:00
path.rs Implement rustc side of report-future-incompat 2020-10-30 20:02:14 -04:00