Auto merge of #116427 - cjgillot:no-internal, r=oli-obk
Remove mir::LocalDecl::internal. It does not serve any purpose, as we don't have typeck-based generator witnesses any more.
This commit is contained in:
commit
5c3a0e932b
38 changed files with 106 additions and 57 deletions
|
@ -183,7 +183,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
// The `Box<T>` temporary created here is not a part of the HIR,
|
||||
// and therefore is not considered during generator auto-trait
|
||||
// determination. See the comment about `box` at `yield_in_scope`.
|
||||
let result = this.local_decls.push(LocalDecl::new(expr.ty, expr_span).internal());
|
||||
let result = this.local_decls.push(LocalDecl::new(expr.ty, expr_span));
|
||||
this.cfg.push(
|
||||
block,
|
||||
Statement { source_info, kind: StatementKind::StorageLive(result) },
|
||||
|
|
|
@ -52,12 +52,10 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
let local_info = match expr.kind {
|
||||
ExprKind::StaticRef { def_id, .. } => {
|
||||
assert!(!this.tcx.is_thread_local_static(def_id));
|
||||
local_decl.internal = true;
|
||||
LocalInfo::StaticRef { def_id, is_thread_local: false }
|
||||
}
|
||||
ExprKind::ThreadLocalRef(def_id) => {
|
||||
assert!(this.tcx.is_thread_local_static(def_id));
|
||||
local_decl.internal = true;
|
||||
LocalInfo::StaticRef { def_id, is_thread_local: true }
|
||||
}
|
||||
ExprKind::NamedConst { def_id, .. } | ExprKind::ConstParam { def_id, .. } => {
|
||||
|
|
|
@ -1798,7 +1798,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
let fake_borrow_ty =
|
||||
Ty::new_imm_ref(tcx, tcx.lifetimes.re_erased, fake_borrow_deref_ty);
|
||||
let mut fake_borrow_temp = LocalDecl::new(fake_borrow_ty, temp_span);
|
||||
fake_borrow_temp.internal = self.local_decls[matched_place.local].internal;
|
||||
fake_borrow_temp.local_info = ClearCrossCrate::Set(Box::new(LocalInfo::FakeBorrow));
|
||||
let fake_borrow_temp = self.local_decls.push(fake_borrow_temp);
|
||||
|
||||
|
@ -2268,7 +2267,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
ty: var_ty,
|
||||
user_ty: if user_ty.is_empty() { None } else { Some(Box::new(user_ty)) },
|
||||
source_info,
|
||||
internal: false,
|
||||
local_info: ClearCrossCrate::Set(Box::new(LocalInfo::User(BindingForm::Var(
|
||||
VarBindingForm {
|
||||
binding_mode,
|
||||
|
@ -2298,7 +2296,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
ty: Ty::new_imm_ref(tcx, tcx.lifetimes.re_erased, var_ty),
|
||||
user_ty: None,
|
||||
source_info,
|
||||
internal: false,
|
||||
local_info: ClearCrossCrate::Set(Box::new(LocalInfo::User(
|
||||
BindingForm::RefForGuard,
|
||||
))),
|
||||
|
|
|
@ -15,9 +15,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
/// N.B., **No cleanup is scheduled for this temporary.** You should
|
||||
/// call `schedule_drop` once the temporary is initialized.
|
||||
pub(crate) fn temp(&mut self, ty: Ty<'tcx>, span: Span) -> Place<'tcx> {
|
||||
// Mark this local as internal to avoid temporaries with types not present in the
|
||||
// user's code resulting in ICEs from the generator transform.
|
||||
let temp = self.local_decls.push(LocalDecl::new(ty, span).internal());
|
||||
let temp = self.local_decls.push(LocalDecl::new(ty, span));
|
||||
let place = Place::from(temp);
|
||||
debug!("temp: created temp {:?} with type {:?}", place, self.local_decls[temp].ty);
|
||||
place
|
||||
|
|
|
@ -725,7 +725,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
|||
// Add a dummy `Assign` statement to the CFG, with the span for the source code's `continue`
|
||||
// statement.
|
||||
fn add_dummy_assignment(&mut self, span: Span, block: BasicBlock, source_info: SourceInfo) {
|
||||
let local_decl = LocalDecl::new(Ty::new_unit(self.tcx), span).internal();
|
||||
let local_decl = LocalDecl::new(Ty::new_unit(self.tcx), span);
|
||||
let temp_place = Place::from(self.local_decls.push(local_decl));
|
||||
self.cfg.push_assign_unit(block, source_info, temp_place, self.tcx);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue