diff options
| author | bors <bors@rust-lang.org> | 2021-08-21 21:14:07 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-08-21 21:14:07 +0000 |
| commit | d3e2578c31688619ddc0a10ddf8543bf4ebcba5b (patch) | |
| tree | dd0352801136043cb1cf6673c1a515d18bcb7044 /compiler/rustc_codegen_ssa | |
| parent | b1928aa3b4a8a2df462e408b67ad29737a3f8f31 (diff) | |
| parent | c22dfab21521f055d47a6680ecdaad7261949112 (diff) | |
| download | rust-d3e2578c31688619ddc0a10ddf8543bf4ebcba5b.tar.gz rust-d3e2578c31688619ddc0a10ddf8543bf4ebcba5b.zip | |
Auto merge of #88135 - crlf0710:trait_upcasting_part_3, r=nikomatsakis
Trait upcasting coercion (part 3) By using separate candidates for each possible choice, this fixes type-checking issues in previous commits. r? `@nikomatsakis`
Diffstat (limited to 'compiler/rustc_codegen_ssa')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/base.rs | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 064a51c8f60..a5143a755fe 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -150,19 +150,8 @@ pub fn unsized_info<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>( // trait upcasting coercion - // if both of the two `principal`s are `None`, this function would have returned early above. - // and if one of the two `principal`s is `None`, typechecking would have rejected this case. - let principal_a = data_a - .principal() - .expect("unsized_info: missing principal trait for trait upcasting coercion"); - let principal_b = data_b - .principal() - .expect("unsized_info: missing principal trait for trait upcasting coercion"); - - let vptr_entry_idx = cx.tcx().vtable_trait_upcasting_coercion_new_vptr_slot(( - principal_a.with_self_ty(cx.tcx(), source), - principal_b.with_self_ty(cx.tcx(), source), - )); + let vptr_entry_idx = + cx.tcx().vtable_trait_upcasting_coercion_new_vptr_slot((source, target)); if let Some(entry_idx) = vptr_entry_idx { let ptr_ty = cx.type_i8p(); |
