Rollup merge of #98574 - dingxiangfei2009:let-else-thir, r=oli-obk
Lower let-else in MIR This MR will switch to lower let-else statements in MIR building instead. To lower let-else in MIR, we build a mini-switch two branches. One branch leads to the matching case, and the other leads to the `else` block. This arrangement will allow temporary lifetime analysis running as-is so that the temporaries are properly extended according to the same rule applied to regular `let` statements. cc https://github.com/rust-lang/rust/issues/87335 Fix #98672
This commit is contained in:
commit
0083cd2fd4
33 changed files with 576 additions and 265 deletions
|
@ -102,7 +102,7 @@ fn is_needs_drop_and_init<'tcx>(
|
|||
let field_needs_drop_and_init = |(f, f_ty, mpi)| {
|
||||
let child = move_path_children_matching(move_data, mpi, |x| x.is_field_to(f));
|
||||
let Some(mpi) = child else {
|
||||
return f_ty.needs_drop(tcx, param_env);
|
||||
return Ty::needs_drop(f_ty, tcx, param_env);
|
||||
};
|
||||
|
||||
is_needs_drop_and_init(tcx, param_env, maybe_inits, move_data, f_ty, mpi)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue