From dda23b1660e0a69ed0983945529b3f30328847f6 Mon Sep 17 00:00:00 2001 From: Gary Guo Date: Thu, 4 Jul 2024 12:02:38 +0100 Subject: [PATCH] resolve name change/expect_resolve signature change --- src/monomorphize_collector.rs | 6 +++--- src/preempt_count/adjustment.rs | 6 +++--- src/preempt_count/check.rs | 22 ++++++++++++---------- src/preempt_count/dataflow.rs | 9 +++++++-- src/preempt_count/expectation.rs | 26 +++++++++++++++----------- 5 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/monomorphize_collector.rs b/src/monomorphize_collector.rs index 3fd664b..c170f0b 100644 --- a/src/monomorphize_collector.rs +++ b/src/monomorphize_collector.rs @@ -703,7 +703,7 @@ fn visit_fn_use<'tcx>( ) { if let ty::FnDef(def_id, args) = *ty.kind() { let instance = if is_direct_call { - ty::Instance::expect_resolve(tcx, ty::ParamEnv::reveal_all(), def_id, args) + ty::Instance::expect_resolve(tcx, ty::ParamEnv::reveal_all(), def_id, args, source) } else { match ty::Instance::resolve_for_fn_ptr(tcx, ty::ParamEnv::reveal_all(), def_id, args) { Some(instance) => instance, @@ -1079,7 +1079,7 @@ impl<'v> RootCollector<'_, 'v> { main_ret_ty.no_bound_vars().unwrap(), ); - let start_instance = Instance::resolve( + let start_instance = Instance::try_resolve( self.tcx, ty::ParamEnv::reveal_all(), start_def_id, @@ -1143,7 +1143,7 @@ fn create_mono_items_for_default_impls<'tcx>( trait_ref.args[param.index as usize] } }); - let instance = ty::Instance::expect_resolve(tcx, param_env, method.def_id, args); + let instance = ty::Instance::expect_resolve(tcx, param_env, method.def_id, args, DUMMY_SP); let mono_item = create_fn_mono_item(tcx, instance, DUMMY_SP); if mono_item.node.is_instantiable(tcx) { diff --git a/src/preempt_count/adjustment.rs b/src/preempt_count/adjustment.rs index 4bc0567..1d3b9cb 100644 --- a/src/preempt_count/adjustment.rs +++ b/src/preempt_count/adjustment.rs @@ -376,7 +376,7 @@ memoize!( let drop_trait = cx.require_lang_item(LangItem::Drop, None); let drop_fn = cx.associated_item_def_ids(drop_trait)[0]; let box_free = - ty::Instance::resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) + ty::Instance::try_resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) .unwrap() .unwrap(); let box_free_adj = cx.instance_adjustment(param_env.and(box_free))?; @@ -466,7 +466,7 @@ memoize!( // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = cx.require_lang_item(LangItem::DropInPlace, None); let args = cx.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(cx.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, drop_in_place, args) .unwrap() .unwrap(); let poly_instance = param_env.and(instance); @@ -584,7 +584,7 @@ memoize!( // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = cx.require_lang_item(LangItem::DropInPlace, None); let args = cx.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(cx.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, drop_in_place, args) .unwrap() .unwrap(); diff --git a/src/preempt_count/check.rs b/src/preempt_count/check.rs index 9f96b54..c824fa3 100644 --- a/src/preempt_count/check.rs +++ b/src/preempt_count/check.rs @@ -162,9 +162,10 @@ impl<'mir, 'tcx, 'cx> MirNeighborVisitor<'mir, 'tcx, 'cx> { let fn_ty = operand.ty(self.body, self.cx.tcx); let fn_ty = self.monomorphize(fn_ty); if let ty::FnDef(def_id, args) = *fn_ty.kind() { - let instance = ty::Instance::resolve(self.cx.tcx, self.param_env, def_id, args) - .unwrap() - .ok_or(Error::TooGeneric)?; + let instance = + ty::Instance::try_resolve(self.cx.tcx, self.param_env, def_id, args) + .unwrap() + .ok_or(Error::TooGeneric)?; self.check_fn_pointer_cast(instance, span)?; } } @@ -255,9 +256,10 @@ impl<'mir, 'tcx, 'cx> MirNeighborVisitor<'mir, 'tcx, 'cx> { let callee_ty = self.monomorphize(callee_ty); if let ty::FnDef(def_id, args) = *callee_ty.kind() { - let instance = ty::Instance::resolve(self.cx.tcx, self.param_env, def_id, args) - .unwrap() - .ok_or(Error::TooGeneric)?; + let instance = + ty::Instance::try_resolve(self.cx.tcx, self.param_env, def_id, args) + .unwrap() + .ok_or(Error::TooGeneric)?; self.cx.call_stack.borrow_mut().push(UseSite { instance: self.param_env.and(self.instance), kind: UseSiteKind::Call(span), @@ -287,7 +289,7 @@ impl<'mir, 'tcx, 'cx> MirNeighborVisitor<'mir, 'tcx, 'cx> { mir::InlineAsmOperand::SymFn { ref value } => { let fn_ty = self.monomorphize(value.const_.ty()); if let ty::FnDef(def_id, args) = *fn_ty.kind() { - let instance = ty::Instance::resolve( + let instance = ty::Instance::try_resolve( self.cx.tcx, self.param_env, def_id, @@ -538,7 +540,7 @@ memoize!( continue; } - let instance = ty::Instance::resolve(cx.tcx, param_env, entry, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, entry, args) .unwrap() .ok_or(Error::TooGeneric)?; let poly_instance = param_env.and(instance); @@ -675,7 +677,7 @@ memoize!( let drop_trait = cx.require_lang_item(LangItem::Drop, None); let drop_fn = cx.associated_item_def_ids(drop_trait)[0]; let box_free = - ty::Instance::resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) + ty::Instance::try_resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) .unwrap() .unwrap(); cx.instance_check(param_env.and(box_free))?; @@ -713,7 +715,7 @@ memoize!( // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = cx.require_lang_item(LangItem::DropInPlace, None); let args = cx.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(cx.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, drop_in_place, args) .unwrap() .unwrap(); let poly_instance = param_env.and(instance); diff --git a/src/preempt_count/dataflow.rs b/src/preempt_count/dataflow.rs index c78f740..81d09d0 100644 --- a/src/preempt_count/dataflow.rs +++ b/src/preempt_count/dataflow.rs @@ -255,8 +255,13 @@ impl<'tcx> Analysis<'tcx> for AdjustmentComputation<'_, 'tcx, '_> { // This also avoids `TooGeneric` when def_id is an trait method. Ok(v) } else { - match ty::Instance::resolve(self.checker.tcx, self.param_env, def_id, args) - .unwrap() + match ty::Instance::try_resolve( + self.checker.tcx, + self.param_env, + def_id, + args, + ) + .unwrap() { Some(instance) => { self.checker.call_stack.borrow_mut().push(UseSite { diff --git a/src/preempt_count/expectation.rs b/src/preempt_count/expectation.rs index dc6753c..6be2aff 100644 --- a/src/preempt_count/expectation.rs +++ b/src/preempt_count/expectation.rs @@ -38,7 +38,7 @@ impl<'tcx> AnalysisCtxt<'tcx> { v } else { let callee_instance = - ty::Instance::resolve(self.tcx, param_env, def_id, args) + ty::Instance::try_resolve(self.tcx, param_env, def_id, args) .unwrap() .ok_or(Error::TooGeneric)?; self.call_stack.borrow_mut().push(UseSite { @@ -149,7 +149,7 @@ impl<'tcx> AnalysisCtxt<'tcx> { return Ok(()); } else { let callee_instance = - ty::Instance::resolve(self.tcx, param_env, def_id, args) + ty::Instance::try_resolve(self.tcx, param_env, def_id, args) .unwrap() .ok_or(Error::TooGeneric)?; @@ -376,10 +376,14 @@ impl<'tcx> AnalysisCtxt<'tcx> { let drop_trait = self.require_lang_item(LangItem::Drop, None); let drop_fn = self.associated_item_def_ids(drop_trait)[0]; - let box_free = - ty::Instance::resolve(self.tcx, param_env, drop_fn, self.mk_args(&[ty.into()])) - .unwrap() - .unwrap(); + let box_free = ty::Instance::try_resolve( + self.tcx, + param_env, + drop_fn, + self.mk_args(&[ty.into()]), + ) + .unwrap() + .unwrap(); return self.report_instance_expectation_error( param_env, box_free, @@ -465,7 +469,7 @@ impl<'tcx> AnalysisCtxt<'tcx> { // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = self.require_lang_item(LangItem::DropInPlace, None); let args = self.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(self.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(self.tcx, param_env, drop_in_place, args) .unwrap() .unwrap(); @@ -527,7 +531,7 @@ impl<'tcx> AnalysisCtxt<'tcx> { v } else { let callee_instance = - ty::Instance::resolve(self.tcx, param_env, def_id, args) + ty::Instance::try_resolve(self.tcx, param_env, def_id, args) .unwrap() .ok_or(Error::TooGeneric)?; self.call_stack.borrow_mut().push(UseSite { @@ -674,7 +678,7 @@ memoize!( let drop_trait = cx.require_lang_item(LangItem::Drop, None); let drop_fn = cx.associated_item_def_ids(drop_trait)[0]; let box_free = - ty::Instance::resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) + ty::Instance::try_resolve(cx.tcx, param_env, drop_fn, cx.mk_args(&[ty.into()])) .unwrap() .unwrap(); let box_free_exp = cx.instance_expectation(param_env.and(box_free))?; @@ -801,7 +805,7 @@ memoize!( // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = cx.require_lang_item(LangItem::DropInPlace, None); let args = cx.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(cx.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, drop_in_place, args) .unwrap() .unwrap(); let poly_instance = param_env.and(instance); @@ -924,7 +928,7 @@ memoize!( // Do not call `resolve_drop_in_place` because we need param_env. let drop_in_place = cx.require_lang_item(LangItem::DropInPlace, None); let args = cx.mk_args(&[ty.into()]); - let instance = ty::Instance::resolve(cx.tcx, param_env, drop_in_place, args) + let instance = ty::Instance::try_resolve(cx.tcx, param_env, drop_in_place, args) .unwrap() .unwrap();