rust/compiler
Dylan DPC abaa78baeb
Rollup merge of #78748 - fanzier:tuple-assignment, r=petrochenkov
Implement destructuring assignment for tuples

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

Quick summary: This change allows destructuring the LHS of an assignment if it's a (possibly nested) tuple.
It is implemented via a desugaring (AST -> HIR lowering) as follows:
```rust
(a,b) = (1,2)
```
... becomes ...
```rust
{
  let (lhs0,lhs1) = (1,2);
  a = lhs0;
  b = lhs1;
}
```

Thanks to `@varkor` who helped with the implementation, particularly around default binding modes.

r? `@petrochenkov`
2020-11-09 01:13:44 +01:00
..
rustc
rustc_apfloat Backport another LLVM commit to rustc_apfloat 2020-10-04 02:02:25 +02:00
rustc_arena Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
rustc_ast Auto merge of #78712 - petrochenkov:visitok, r=Aaron1011 2020-11-08 20:00:51 +00:00
rustc_ast_lowering Implement destructuring assignment for tuples 2020-11-07 13:17:19 +00:00
rustc_ast_passes Fix typos 2020-10-29 16:51:46 +01:00
rustc_ast_pretty Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
rustc_attr Improve deprecation attribute diagnostic messages. 2020-11-02 13:21:18 +01:00
rustc_builtin_macros Unconditionally capture tokens for attributes. 2020-10-21 18:57:29 -04:00
rustc_codegen_cranelift Rollup merge of #78674 - tmiasko:inline-substs-for-mir-body, r=oli-obk 2020-11-09 01:13:42 +01:00
rustc_codegen_llvm Addressed all feedback to date 2020-11-05 18:24:17 -08:00
rustc_codegen_ssa Rollup merge of #78674 - tmiasko:inline-substs-for-mir-body, r=oli-obk 2020-11-09 01:13:42 +01:00
rustc_data_structures Move post order walk to iterative approach 2020-10-31 18:52:00 +01:00
rustc_driver Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
rustc_error_codes deny(invalid_codeblock_attributes) 2020-11-05 12:13:28 -05:00
rustc_errors Auto merge of #76931 - oli-obk:const_prop_inline_lint_madness, r=wesleywiser 2020-11-03 16:32:34 +00:00
rustc_expand typo and formatting 2020-11-07 23:25:10 +00:00
rustc_feature Implement destructuring assignment for tuples 2020-11-07 13:17:19 +00:00
rustc_fs_util Remove unused code from remaining compiler crates 2020-10-14 04:14:32 +02:00
rustc_graphviz Rust coverage before splitting instrument_coverage.rs 2020-11-05 18:24:12 -08:00
rustc_hir Rollup merge of #78748 - fanzier:tuple-assignment, r=petrochenkov 2020-11-09 01:13:44 +01:00
rustc_hir_pretty Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
rustc_incremental Delete files immediately, instead of collecting into vector 2020-10-28 17:22:10 +01:00
rustc_index
rustc_infer fix a couple of clippy warnings: 2020-11-04 13:48:50 +01:00
rustc_interface fix a couple of clippy warnings: 2020-11-04 13:48:50 +01:00
rustc_lexer Add back missing comments 2020-10-30 10:13:41 -04:00
rustc_lint Rename lint to non_autolinks 2020-11-05 10:22:08 +01:00
rustc_lint_defs Rollup merge of #78114 - jyn514:private, r=oli-obk 2020-11-09 01:13:31 +01:00
rustc_llvm Rollup merge of #77950 - arlosi:sha256, r=eddyb 2020-11-03 19:32:26 +01:00
rustc_macros Small cleanup in TypeFoldable derive macro 2020-11-07 18:20:42 +01:00
rustc_metadata Auto merge of #78448 - rylev:cache-foreign_modules, r=wesleywiser 2020-11-03 04:27:27 +00:00
rustc_middle Rollup merge of #78674 - tmiasko:inline-substs-for-mir-body, r=oli-obk 2020-11-09 01:13:42 +01:00
rustc_mir Rollup merge of #78674 - tmiasko:inline-substs-for-mir-body, r=oli-obk 2020-11-09 01:13:42 +01:00
rustc_mir_build Rollup merge of #78748 - fanzier:tuple-assignment, r=petrochenkov 2020-11-09 01:13:44 +01:00
rustc_parse Fix even more URLs 2020-11-05 20:11:29 +01:00
rustc_parse_format
rustc_passes Rollup merge of #78626 - fusion-engineering-forks:deprecated-trait-impl, r=estebank 2020-11-03 19:32:36 +01:00
rustc_plugin_impl
rustc_privacy Fix even more URLs 2020-11-05 20:11:29 +01:00
rustc_query_system Fix even more clippy warnings 2020-10-30 10:13:39 -04:00
rustc_resolve Rollup merge of #78860 - petrochenkov:resolvefmt, r=Mark-Simulacrum 2020-11-08 13:36:30 +01:00
rustc_save_analysis Show the inline stack of MIR lints that only occur after inlining 2020-10-27 14:08:07 +00:00
rustc_serialize Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_session Responded to all feedback as of 2020-10-30 2020-11-05 18:24:18 -08:00
rustc_span Rollup merge of #78748 - fanzier:tuple-assignment, r=petrochenkov 2020-11-09 01:13:44 +01:00
rustc_symbol_mangling u128 truncation and sign extension are not just interpreter related 2020-11-04 13:41:58 +00:00
rustc_target Update recently added targets 2020-11-07 14:34:44 +03:00
rustc_trait_selection Auto merge of #78410 - lcnr:revert75443, r=nikomatsakis 2020-11-08 11:27:06 +00:00
rustc_traits Auto merge of #78182 - LeSeulArtichaut:ty-visitor-contolflow, r=lcnr,oli-obk 2020-10-30 22:53:55 +00:00
rustc_ty Calculate visibilities once in resolve 2020-10-19 11:57:50 +03:00
rustc_typeck Rollup merge of #78748 - fanzier:tuple-assignment, r=petrochenkov 2020-11-09 01:13:44 +01:00