diff options
| author | marmeladema <xademax@gmail.com> | 2020-04-18 15:16:01 +0100 |
|---|---|---|
| committer | marmeladema <xademax@gmail.com> | 2020-04-27 23:55:41 +0100 |
| commit | 9e3bb615d5659c62133de5dbf9398be2c9bc6d69 (patch) | |
| tree | b47137320a57dc0642e578d2a7e16a8c94a55c96 | |
| parent | eada4101a0544fc97dca688810e32856ea9020e1 (diff) | |
| download | rust-9e3bb615d5659c62133de5dbf9398be2c9bc6d69.tar.gz rust-9e3bb615d5659c62133de5dbf9398be2c9bc6d69.zip | |
Accept `LocalDefId` as argument for `mir_build::lint::check`
| -rw-r--r-- | src/librustc_mir_build/build/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustc_mir_build/lints.rs | 17 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/librustc_mir_build/build/mod.rs b/src/librustc_mir_build/build/mod.rs index a37c927b35a..69a04e772ec 100644 --- a/src/librustc_mir_build/build/mod.rs +++ b/src/librustc_mir_build/build/mod.rs @@ -181,7 +181,7 @@ fn mir_build(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Body<'_> { build::construct_const(cx, body_id, return_ty, return_ty_span) }; - lints::check(tcx, &body, def_id.to_def_id()); + lints::check(tcx, &body, def_id); // The borrow checker will replace all the regions here with its own // inference variables. There's no point having non-erased regions here. diff --git a/src/librustc_mir_build/lints.rs b/src/librustc_mir_build/lints.rs index 38f5df3e705..990f55f6d42 100644 --- a/src/librustc_mir_build/lints.rs +++ b/src/librustc_mir_build/lints.rs @@ -1,7 +1,7 @@ use rustc_data_structures::graph::iterate::{ ControlFlow, NodeStatus, TriColorDepthFirstSearch, TriColorVisitor, }; -use rustc_hir::def_id::DefId; +use rustc_hir::def_id::LocalDefId; use rustc_hir::intravisit::FnKind; use rustc_middle::hir::map::blocks::FnLikeNode; use rustc_middle::mir::{BasicBlock, Body, Operand, TerminatorKind}; @@ -10,8 +10,8 @@ use rustc_middle::ty::{self, AssocItem, AssocItemContainer, Instance, TyCtxt}; use rustc_session::lint::builtin::UNCONDITIONAL_RECURSION; use rustc_span::Span; -crate fn check<'tcx>(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, def_id: DefId) { - let hir_id = tcx.hir().as_local_hir_id(def_id.expect_local()); +crate fn check<'tcx>(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, def_id: LocalDefId) { + let hir_id = tcx.hir().as_local_hir_id(def_id); if let Some(fn_like_node) = FnLikeNode::from_node(tcx.hir().get(hir_id)) { if let FnKind::Closure(_) = fn_like_node.kind() { @@ -20,12 +20,12 @@ crate fn check<'tcx>(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, def_id: DefId) { } // If this is trait/impl method, extract the trait's substs. - let trait_substs = match tcx.opt_associated_item(def_id) { + let trait_substs = match tcx.opt_associated_item(def_id.to_def_id()) { Some(AssocItem { container: AssocItemContainer::TraitContainer(trait_def_id), .. }) => { let trait_substs_count = tcx.generics_of(trait_def_id).count(); - &InternalSubsts::identity_for_item(tcx, def_id)[..trait_substs_count] + &InternalSubsts::identity_for_item(tcx, def_id.to_def_id())[..trait_substs_count] } _ => &[], }; @@ -37,7 +37,7 @@ crate fn check<'tcx>(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, def_id: DefId) { vis.reachable_recursive_calls.sort(); - let hir_id = tcx.hir().as_local_hir_id(def_id.expect_local()); + let hir_id = tcx.hir().as_local_hir_id(def_id); let sp = tcx.sess.source_map().guess_head_span(tcx.hir().span(hir_id)); tcx.struct_span_lint_hir(UNCONDITIONAL_RECURSION, hir_id, sp, |lint| { let mut db = lint.build("function cannot return without recursing"); @@ -57,7 +57,7 @@ struct NonRecursive; struct Search<'mir, 'tcx> { tcx: TyCtxt<'tcx>, body: &'mir Body<'tcx>, - def_id: DefId, + def_id: LocalDefId, trait_substs: &'tcx [GenericArg<'tcx>], reachable_recursive_calls: Vec<Span>, @@ -84,7 +84,8 @@ impl<'mir, 'tcx> Search<'mir, 'tcx> { // calling into an entirely different method (for example, a call from the default // method in the trait to `<A as Trait<B>>::method`, where `A` and/or `B` are // specific types). - return call_fn_id == def_id && &call_substs[..trait_substs.len()] == trait_substs; + return call_fn_id == def_id.to_def_id() + && &call_substs[..trait_substs.len()] == trait_substs; } false |
