Skip to content

Commit 4a56083

Browse files
authored
Merge pull request rust-lang#226 from dwrensha/rustup
update for upstream changes to TyFnDef
2 parents 695f972 + 73ab5c7 commit 4a56083

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/eval_context.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
771771
}
772772

773773
ReifyFnPointer => match self.operand_ty(operand).sty {
774-
ty::TyFnDef(def_id, substs, _) => {
774+
ty::TyFnDef(def_id, substs) => {
775775
let instance = resolve(self.tcx, def_id, substs);
776776
let fn_ptr = self.memory.create_fn_alloc(instance);
777777
self.write_value(Value::ByVal(PrimVal::Ptr(fn_ptr)), dest, dest_ty)?;
@@ -1686,7 +1686,7 @@ pub fn eval_main<'a, 'tcx: 'a>(
16861686
let main_ptr = ecx.memory.create_fn_alloc(main_instance);
16871687
let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?;
16881688
let main_ty = main_instance.def.def_ty(ecx.tcx);
1689-
let main_ptr_ty = ecx.tcx.mk_fn_ptr(main_ty.fn_sig());
1689+
let main_ptr_ty = ecx.tcx.mk_fn_ptr(main_ty.fn_sig(ecx.tcx));
16901690
ecx.write_value(Value::ByVal(PrimVal::Ptr(main_ptr)), dest, main_ptr_ty)?;
16911691

16921692
// Second argument (argc): 0
@@ -1830,7 +1830,7 @@ fn fn_once_adapter_instance<'a, 'tcx>(
18301830
let self_ty = tcx.mk_closure_from_closure_substs(
18311831
closure_did, substs);
18321832

1833-
let sig = tcx.closure_type(closure_did).subst(tcx, substs.substs);
1833+
let sig = tcx.fn_sig(closure_did).subst(tcx, substs.substs);
18341834
let sig = tcx.erase_late_bound_regions_and_normalize(&sig);
18351835
assert_eq!(sig.inputs().len(), 1);
18361836
let substs = tcx.mk_substs([
@@ -1891,9 +1891,11 @@ pub fn resolve<'a, 'tcx>(
18911891
} else {
18921892
let item_type = def_ty(tcx, def_id, substs);
18931893
let def = match item_type.sty {
1894-
ty::TyFnDef(_, _, f) if
1895-
f.abi() == Abi::RustIntrinsic ||
1896-
f.abi() == Abi::PlatformIntrinsic =>
1894+
ty::TyFnDef(..) if {
1895+
let f = item_type.fn_sig(tcx);
1896+
f.abi() == Abi::RustIntrinsic ||
1897+
f.abi() == Abi::PlatformIntrinsic
1898+
} =>
18971899
{
18981900
debug!(" => intrinsic");
18991901
ty::InstanceDef::Intrinsic(def_id)

src/terminator/mod.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,11 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
7272
let instance_ty = instance.def.def_ty(self.tcx);
7373
let instance_ty = self.monomorphize(instance_ty, instance.substs);
7474
match instance_ty.sty {
75-
ty::TyFnDef(_, _, real_sig) => {
75+
ty::TyFnDef(..) => {
76+
let real_sig = instance_ty.fn_sig(self.tcx);
7677
let sig = self.erase_lifetimes(&sig);
7778
let real_sig = self.erase_lifetimes(&real_sig);
79+
let real_sig = self.tcx.normalize_associated_type(&real_sig);
7880
if !self.check_sig_compat(sig, real_sig)? {
7981
return Err(EvalError::FunctionPointerTyMismatch(real_sig, sig));
8082
}
@@ -83,7 +85,7 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
8385
}
8486
(instance, sig)
8587
},
86-
ty::TyFnDef(def_id, substs, sig) => (::eval_context::resolve(self.tcx, def_id, substs), sig),
88+
ty::TyFnDef(def_id, substs) => (::eval_context::resolve(self.tcx, def_id, substs), func_ty.fn_sig(self.tcx)),
8789
_ => {
8890
let msg = format!("can't handle callee of type {:?}", func_ty);
8991
return Err(EvalError::Unimplemented(msg));

0 commit comments

Comments
 (0)