granite-rust/compiler
bors 21fab435da Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung
Evaluate place expression in `PlaceMention`

https://github.com/rust-lang/rust/pull/102256 introduces a `PlaceMention(place)` MIR statement which keep trace of `let _ = place` statements from surface rust, but without semantics.

This PR proposes to change the behaviour of `let _ =` patterns with respect to the borrow-checker to verify that the bound place is live.

Specifically, consider this code:
```rust
let _ = {
    let a = 5;
    &a
};
```

This passes borrowck without error on stable. Meanwhile, replacing `_` by `_: _` or `_p` errors with "error[E0597]: `a` does not live long enough", [see playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c448d25a7c205dc95a0967fe96bccce8).

This PR *does not* change how `_` patterns behave with respect to initializedness: it remains ok to bind a moved-from place to `_`.

The relevant test is `tests/ui/borrowck/let_underscore_temporary.rs`. Crater check found no regression.

For consistency, this PR changes miri to evaluate the place found in `PlaceMention`, and report eventual dangling pointers found within it.

r? `@RalfJung`
2023-04-22 09:54:21 +00:00
..
rustc fix link 2023-03-11 10:53:47 -06:00
rustc_abi Store hashes in special types so they aren't accidentally encoded as numbers 2023-04-18 10:52:47 -04:00
rustc_apfloat compiler: remove unnecessary imports and qualified paths 2022-12-10 18:45:34 +01:00
rustc_arena Allow clippy::from_mut_ref 2023-04-09 22:29:56 +02:00
rustc_ast use P<[Ident]> instead of Vec<Ident> 2023-04-21 02:14:03 -07:00
rustc_ast_lowering offset_of 2023-04-21 02:14:02 -07:00
rustc_ast_passes Auto merge of #110407 - Nilstrieb:fluent-macro, r=davidtwco 2023-04-19 08:26:47 +00:00
rustc_ast_pretty minor tweaks 2023-04-21 02:14:04 -07:00
rustc_attr Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_baked_icu_data update ICU4X to 1.1.0 2023-02-04 22:28:59 +01:00
rustc_borrowck Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung 2023-04-22 09:54:21 +00:00
rustc_builtin_macros use P<[Ident]> instead of Vec<Ident> 2023-04-21 02:14:03 -07:00
rustc_codegen_cranelift Auto merge of #106934 - DrMeepster:offset_of, r=WaffleLapkin 2023-04-22 00:10:44 +00:00
rustc_codegen_gcc Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_codegen_llvm Rollup merge of #110545 - WaffleLapkin:generic_arg_as_x, r=cjgillot 2023-04-20 14:36:54 +02:00
rustc_codegen_ssa Auto merge of #106934 - DrMeepster:offset_of, r=WaffleLapkin 2023-04-22 00:10:44 +00:00
rustc_const_eval Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung 2023-04-22 09:54:21 +00:00
rustc_data_structures deny(unsafe_op_in_unsafe_fn) in rustc_data_structures 2023-04-19 18:00:48 +00:00
rustc_driver Remove unneeded extern crate 2023-02-02 07:47:39 +01:00
rustc_driver_impl Remove WithOptconstParam. 2023-04-20 17:48:32 +00:00
rustc_error_codes Spelling - compiler 2023-04-17 16:09:18 -04:00
rustc_error_messages Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_errors Rollup merge of #110578 - bvanjoi:fix-issue-110547, r=jackh726 2023-04-21 06:44:30 +02:00
rustc_expand Auto merge of #109002 - michaelvanstraten:master, r=petrochenkov 2023-04-21 10:47:27 +00:00
rustc_feature Spelling - compiler 2023-04-17 16:09:18 -04:00
rustc_fluent_macro Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_fs_util Add try_canonicalize to rustc_fs_util and use it over fs::canonicalize 2023-03-16 21:50:23 +01:00
rustc_graphviz Fix uninlined_format_args for some compiler crates 2023-01-05 19:01:12 +01:00
rustc_hir offset_of 2023-04-21 02:14:02 -07:00
rustc_hir_analysis Auto merge of #96840 - cjgillot:query-feed, r=oli-obk 2023-04-21 08:04:58 +00:00
rustc_hir_pretty minor tweaks 2023-04-21 02:14:04 -07:00
rustc_hir_typeck Auto merge of #106934 - DrMeepster:offset_of, r=WaffleLapkin 2023-04-22 00:10:44 +00:00
rustc_incremental Auto merge of #110407 - Nilstrieb:fluent-macro, r=davidtwco 2023-04-19 08:26:47 +00:00
rustc_index Don't allocate it IndexVec::remove 2023-04-18 12:55:54 +00:00
rustc_infer Remove WithOptconstParam. 2023-04-20 17:48:32 +00:00
rustc_interface Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung 2023-04-22 09:54:21 +00:00
rustc_lexer Revert "Don't recover lifetimes/labels containing emojis as character literals" 2023-04-10 06:52:41 +00:00
rustc_lint Rollup merge of #110545 - WaffleLapkin:generic_arg_as_x, r=cjgillot 2023-04-20 14:36:54 +02:00
rustc_lint_defs Spelling - compiler 2023-04-17 16:09:18 -04:00
rustc_llvm Recognize AIX style archive kind 2023-04-19 11:10:47 +08:00
rustc_log Stabilize IsTerminal 2023-04-10 17:24:23 +09:00
rustc_macros Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_metadata Encode lifetime param spans too 2023-04-22 01:13:54 +00:00
rustc_middle Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung 2023-04-22 09:54:21 +00:00
rustc_mir_build Auto merge of #106934 - DrMeepster:offset_of, r=WaffleLapkin 2023-04-22 00:10:44 +00:00
rustc_mir_dataflow offset_of 2023-04-21 02:14:02 -07:00
rustc_mir_transform Auto merge of #104844 - cjgillot:mention-eval-place, r=jackh726,RalfJung 2023-04-22 09:54:21 +00:00
rustc_monomorphize Auto merge of #110567 - JohnBobbo96:monomorphize-dyn-dispatch, r=b-naber 2023-04-22 07:43:43 +00:00
rustc_parse Auto merge of #110407 - Nilstrieb:fluent-macro, r=davidtwco 2023-04-19 08:26:47 +00:00
rustc_parse_format Fix typos in compiler 2023-04-10 22:02:52 +02:00
rustc_passes fmt 2023-04-21 02:14:03 -07:00
rustc_plugin_impl Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_privacy Add rustc_fluent_macro to decouple fluent from rustc_macros 2023-04-18 18:56:22 +00:00
rustc_query_impl Rollup merge of #110632 - saethlin:panic-if-dep-graph-too-big, r=lcnr 2023-04-21 20:35:29 +05:30
rustc_query_system Add info for no_hash panic. 2023-04-20 18:56:12 +00:00
rustc_resolve Auto merge of #110648 - Dylan-DPC:rollup-em3ovcq, r=Dylan-DPC 2023-04-21 19:43:11 +00:00
rustc_serialize Remove f32 & f64 from MemDecoder/MemEncoder 2023-04-06 00:54:07 -07:00
rustc_session Actually keep PlaceMention if requested. 2023-04-21 21:34:59 +00:00
rustc_smir Add Call terminator to SMIR 2023-04-20 12:00:41 -03:00
rustc_span offset_of 2023-04-21 02:14:02 -07:00
rustc_symbol_mangling Add GenericArgKind::as_{type,const,region} 2023-04-19 14:54:31 +00:00
rustc_target Auto merge of #110666 - JohnTitor:rollup-3pwilte, r=JohnTitor 2023-04-22 05:35:08 +00:00
rustc_trait_selection Auto merge of #96840 - cjgillot:query-feed, r=oli-obk 2023-04-21 08:04:58 +00:00
rustc_traits Don't transmute &List<GenericArg> <-> &List<Ty> 2023-04-18 17:42:30 +00:00
rustc_transmute Erase regions when confirming transmutability candidate 2023-04-16 19:12:34 +00:00
rustc_ty_utils Auto merge of #106934 - DrMeepster:offset_of, r=WaffleLapkin 2023-04-22 00:10:44 +00:00
rustc_type_ir Print ty placeholders pretty 2023-04-22 01:19:28 +00:00