rust/compiler
bors e82584a77d Auto merge of #75585 - RalfJung:demotion, r=oli-obk
Do not promote &mut of a non-ZST ever

Since ~pre-1.0~ 1.36, we have accepted code like this:
```rust
static mut TEST: &'static mut [i32] = {
    let x = &mut [1,2,3];
    x
};
```
I tracked it back to https://github.com/rust-lang/rust/pull/21744, but unfortunately could not find any discussion or RFC that would explain why we thought this was a good idea. And it's not, it breaks all sorts of things -- see https://github.com/rust-lang/rust/issues/75556.

To fix https://github.com/rust-lang/rust/issues/75556, we have to stop promoting non-ZST mutable references no matter the context, which is what this PR does. It's a breaking change.

Notice that this still works, since it does not rely on promotion:
```rust
static mut TEST: &'static mut [i32] = &mut [0,1,2];
```

Cc `@rust-lang/wg-const-eval`
2020-09-08 05:13:42 +00:00
..
rustc cleanup: Remove duplicate library names from Cargo.tomls 2020-08-30 22:57:54 +03:00
rustc_apfloat mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_arena mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast Rollup merge of #76274 - scottmcm:fix-76271, r=petrochenkov 2020-09-07 01:17:46 +02:00
rustc_ast_lowering mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast_passes Implementation of incompatible features error 2020-09-04 22:17:28 +08:00
rustc_ast_pretty Auto merge of #76170 - matklad:notrivia, r=petrochenkov 2020-09-02 03:19:38 +00:00
rustc_attr mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_builtin_macros Improve recovery on malformed format call 2020-09-02 13:18:19 +02:00
rustc_codegen_llvm Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_codegen_ssa Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_data_structures Add BREAK too, and improve the comments 2020-09-04 16:28:23 -07:00
rustc_driver Auto merge of #73996 - da-x:short-unique-paths, r=petrochenkov 2020-09-03 23:27:45 +00:00
rustc_error_codes Auto merge of #75138 - jumbatm:session-diagnostic-derive, r=oli-obk 2020-09-08 00:58:43 +00:00
rustc_errors rustc_{errors,session}: add delay_good_path_bug 2020-09-02 10:43:17 +03:00
rustc_expand Optimize Cursor::look_ahead 2020-09-03 23:28:22 +02:00
rustc_feature Implementation of incompatible features error 2020-09-04 22:17:28 +08:00
rustc_fs_util mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_graphviz mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_hir add track_caller to local_def_id_to_hir_id 2020-09-04 09:24:44 +02:00
rustc_hir_pretty mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_incremental mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_index Improve BitSet APIs 2020-08-30 11:13:18 -07:00
rustc_infer ty.flags -> ty.flags() 2020-09-04 18:28:20 +02:00
rustc_interface Auto merge of #73996 - da-x:short-unique-paths, r=petrochenkov 2020-09-03 23:27:45 +00:00
rustc_lexer lexer: Tiny improvement to shebang detection 2020-09-02 00:40:19 +03:00
rustc_lint Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_macros Auto merge of #75138 - jumbatm:session-diagnostic-derive, r=oli-obk 2020-09-08 00:58:43 +00:00
rustc_metadata Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_middle Rollup merge of #76340 - jonas-schievink:rm-dupe, r=Mark-Simulacrum 2020-09-07 01:18:10 +02:00
rustc_mir Auto merge of #75585 - RalfJung:demotion, r=oli-obk 2020-09-08 05:13:42 +00:00
rustc_mir_build Rollup merge of #76318 - scottmcm:one-control-flow, r=ecstatic-morse 2020-09-07 01:18:05 +02:00
rustc_parse Optimize Cursor::look_ahead 2020-09-03 23:28:22 +02:00
rustc_parse_format mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_passes Auto merge of #75888 - GuillaumeGomez:trait-impl-assoc-const-doc-alias, r=ollie27 2020-09-05 09:35:17 +00:00
rustc_plugin_impl mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_privacy Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_query_system mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_resolve Rollup merge of #76143 - jyn514:duplicate-builtin-macros, r=petrochenkov 2020-09-01 18:24:35 -07:00
rustc_save_analysis Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_serialize mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_session Auto merge of #75138 - jumbatm:session-diagnostic-derive, r=oli-obk 2020-09-08 00:58:43 +00:00
rustc_span Adds two source span utility functions used in source-based coverage 2020-08-31 18:41:57 -07:00
rustc_symbol_mangling Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_target Rollup merge of #76364 - fusion-engineering-forks:avr-no-atomic, r=jonas-schievink 2020-09-07 01:18:17 +02:00
rustc_trait_selection ty.flags -> ty.flags() 2020-09-04 18:28:20 +02:00
rustc_traits kind -> kind() 2020-09-04 19:17:57 -04:00
rustc_ty Change ty.kind to a method 2020-09-04 17:47:51 +02:00
rustc_typeck Auto merge of #75138 - jumbatm:session-diagnostic-derive, r=oli-obk 2020-09-08 00:58:43 +00:00