Skip to content

Commit

Permalink
resolve name change/expect_resolve signature change
Browse files Browse the repository at this point in the history
  • Loading branch information
nbdd0121 committed Jul 4, 2024
1 parent 4482a67 commit dda23b1
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 29 deletions.
6 changes: 3 additions & 3 deletions src/monomorphize_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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) {
Expand Down
6 changes: 3 additions & 3 deletions src/preempt_count/adjustment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))?;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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();

Expand Down
22 changes: 12 additions & 10 deletions src/preempt_count/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)?;
}
}
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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))?;
Expand Down Expand Up @@ -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);
Expand Down
9 changes: 7 additions & 2 deletions src/preempt_count/dataflow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
26 changes: 15 additions & 11 deletions src/preempt_count/expectation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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)?;

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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))?;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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();

Expand Down

0 comments on commit dda23b1

Please sign in to comment.