diff options
| author | Adam Perry <adam.n.perry@gmail.com> | 2019-10-10 07:31:22 -0700 |
|---|---|---|
| committer | Adam Perry <adam.n.perry@gmail.com> | 2019-10-10 07:31:22 -0700 |
| commit | 407d1d5fd4a81b2bc717fc86475209eb59d50fb8 (patch) | |
| tree | 94c5502fad585e23fcdaa78d9a0749a949fee502 | |
| parent | 1cdd5d099d3a8da42db6fbd259d3f757bccb961f (diff) | |
| download | rust-407d1d5fd4a81b2bc717fc86475209eb59d50fb8.tar.gz rust-407d1d5fd4a81b2bc717fc86475209eb59d50fb8.zip | |
Instance::resolve_for_fn_ptr unconditionally resolves first.
Per review feedback.
| -rw-r--r-- | src/librustc/ty/instance.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/librustc/ty/instance.rs b/src/librustc/ty/instance.rs index b35b577ddf7..0a86b0b4148 100644 --- a/src/librustc/ty/instance.rs +++ b/src/librustc/ty/instance.rs @@ -310,15 +310,19 @@ impl<'tcx> Instance<'tcx> { substs: SubstsRef<'tcx>, ) -> Option<Instance<'tcx>> { debug!("resolve(def_id={:?}, substs={:?})", def_id, substs); - if tcx.codegen_fn_attrs(def_id).flags.contains(CodegenFnAttrFlags::TRACK_CALLER) { - debug!(" => fn pointer created for function with #[track_caller]"); - Some(Instance { - def: InstanceDef::ReifyShim(def_id), - substs, - }) - } else { - Instance::resolve(tcx, param_env, def_id, substs) - } + Instance::resolve(tcx, param_env, def_id, substs).map(|resolved| { + let resolved_def = resolved.def_id(); + let codegen_attrs = tcx.codegen_fn_attrs(resolved_def); + if codegen_attrs.flags.contains(CodegenFnAttrFlags::TRACK_CALLER) { + debug!(" => fn pointer created for function with #[track_caller]"); + Instance { + def: InstanceDef::ReifyShim(resolved_def), + substs, + } + } else { + resolved + } + }) } pub fn resolve_for_vtable( |
