Skip to content

Commit

Permalink
Auto merge of rust-lang#103861 - compiler-errors:codegen-select-in-vt…
Browse files Browse the repository at this point in the history
…able-slot, r=nagisa

Use `codegen_select` in `vtable_trait_upcasting_coercion_new_vptr_slot`

A super tiny clean up
  • Loading branch information
bors committed Nov 6, 2022
2 parents 534ddc6 + 20bb56e commit 1e1e5b8
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions compiler/rustc_trait_selection/src/traits/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -900,25 +900,13 @@ pub fn vtable_trait_upcasting_coercion_new_vptr_slot<'tcx>(
def_id: unsize_trait_did,
substs: tcx.mk_substs_trait(source, &[target.into()]),
};
let obligation = Obligation::new(
ObligationCause::dummy(),
ty::ParamEnv::reveal_all(),
ty::Binder::dummy(ty::TraitPredicate {
trait_ref,
constness: ty::BoundConstness::NotConst,
polarity: ty::ImplPolarity::Positive,
}),
);

let infcx = tcx.infer_ctxt().build();
let mut selcx = SelectionContext::new(&infcx);
let implsrc = selcx.select(&obligation).unwrap();

let Some(ImplSource::TraitUpcasting(implsrc_traitcasting)) = implsrc else {
bug!();
};

implsrc_traitcasting.vtable_vptr_slot
match tcx.codegen_select_candidate((ty::ParamEnv::reveal_all(), ty::Binder::dummy(trait_ref))) {
Ok(ImplSource::TraitUpcasting(implsrc_traitcasting)) => {
implsrc_traitcasting.vtable_vptr_slot
}
otherwise => bug!("expected TraitUpcasting candidate, got {otherwise:?}"),
}
}

pub fn provide(providers: &mut ty::query::Providers) {
Expand Down

0 comments on commit 1e1e5b8

Please sign in to comment.