diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2022-03-29 17:11:12 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2022-03-29 18:50:52 +0200 |
| commit | 21a554caf680b74ee6270d3a61b0336b643c5456 (patch) | |
| tree | e292c7ada14407a4008626d27304c3f7b244e6c9 /compiler/rustc_borrowck | |
| parent | 11909e3588319235e28e99294e17cca11db1d7e2 (diff) | |
| download | rust-21a554caf680b74ee6270d3a61b0336b643c5456.tar.gz rust-21a554caf680b74ee6270d3a61b0336b643c5456.zip | |
Remember mutability in `DefKind::Static`.
This allows to compute the `BodyOwnerKind` from `DefKind` only, and removes a direct dependency of some MIR queries onto HIR. As a side effect, it also simplifies metadata, since we don't need 4 flavours of `EntryKind::*Static` any more.
Diffstat (limited to 'compiler/rustc_borrowck')
| -rw-r--r-- | compiler/rustc_borrowck/src/lib.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_borrowck/src/universal_regions.rs | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/compiler/rustc_borrowck/src/lib.rs b/compiler/rustc_borrowck/src/lib.rs index 6f78c816093..2484d6d15b4 100644 --- a/compiler/rustc_borrowck/src/lib.rs +++ b/compiler/rustc_borrowck/src/lib.rs @@ -154,7 +154,6 @@ fn do_mir_borrowck<'a, 'tcx>( let tcx = infcx.tcx; let param_env = tcx.param_env(def.did); - let id = tcx.hir().local_def_id_to_hir_id(def.did); let mut local_names = IndexVec::from_elem(None, &input_body.local_decls); for var_debug_info in &input_body.var_debug_info { @@ -224,7 +223,7 @@ fn do_mir_borrowck<'a, 'tcx>( .iterate_to_fixpoint() .into_results_cursor(&body); - let locals_are_invalidated_at_exit = tcx.hir().body_owner_kind(id).is_fn_or_closure(); + let locals_are_invalidated_at_exit = tcx.hir().body_owner_kind(def.did).is_fn_or_closure(); let borrow_set = Rc::new(BorrowSet::build(tcx, body, locals_are_invalidated_at_exit, &mdpe.move_data)); @@ -287,8 +286,9 @@ fn do_mir_borrowck<'a, 'tcx>( .pass_name("borrowck") .iterate_to_fixpoint(); + let def_hir_id = tcx.hir().local_def_id_to_hir_id(def.did); let movable_generator = !matches!( - tcx.hir().get(id), + tcx.hir().get(def_hir_id), Node::Expr(&hir::Expr { kind: hir::ExprKind::Closure(.., Some(hir::Movability::Static)), .. @@ -383,7 +383,7 @@ fn do_mir_borrowck<'a, 'tcx>( let scope = mbcx.body.source_info(location).scope; let lint_root = match &mbcx.body.source_scopes[scope].local_data { ClearCrossCrate::Set(data) => data.lint_root, - _ => id, + _ => def_hir_id, }; // Span and message don't matter; we overwrite them below anyway diff --git a/compiler/rustc_borrowck/src/universal_regions.rs b/compiler/rustc_borrowck/src/universal_regions.rs index 478dbe31fba..92d08f090ab 100644 --- a/compiler/rustc_borrowck/src/universal_regions.rs +++ b/compiler/rustc_borrowck/src/universal_regions.rs @@ -524,7 +524,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> { let tcx = self.infcx.tcx; let typeck_root_def_id = tcx.typeck_root_def_id(self.mir_def.did.to_def_id()); - match tcx.hir().body_owner_kind(self.mir_hir_id) { + match tcx.hir().body_owner_kind(self.mir_def.did) { BodyOwnerKind::Closure | BodyOwnerKind::Fn => { let defining_ty = if self.mir_def.did.to_def_id() == typeck_root_def_id { tcx.type_of(typeck_root_def_id) |
