diff options
| author | Charles Lew <crlf0710@gmail.com> | 2021-08-18 12:45:18 +0800 |
|---|---|---|
| committer | Charles Lew <crlf0710@gmail.com> | 2021-08-18 13:00:27 +0800 |
| commit | 03ed8c811513a41ad076ae206cbc2a930888bef2 (patch) | |
| tree | 8e74b21c344d2700e49c924efe574604d863017b | |
| parent | 1bfa59afe042e03371c7c62860e94db1e20bd657 (diff) | |
| download | rust-03ed8c811513a41ad076ae206cbc2a930888bef2.tar.gz rust-03ed8c811513a41ad076ae206cbc2a930888bef2.zip | |
Fold `vtable_trait_upcasting_coercion_new_vptr_slot` logic into obligation processing.
| -rw-r--r-- | src/unsize.rs | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/unsize.rs b/src/unsize.rs index d9c4647cba3..fd96858010e 100644 --- a/src/unsize.rs +++ b/src/unsize.rs @@ -31,21 +31,10 @@ pub(crate) fn unsized_info<'tcx>( if data_a.principal_def_id() == data_b.principal_def_id() { return old_info; } - // 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 = fx.tcx.vtable_trait_upcasting_coercion_new_vptr_slot(( - principal_a.with_self_ty(fx.tcx, source), - principal_b.with_self_ty(fx.tcx, source), - )); + // trait upcasting coercion + let vptr_entry_idx = + fx.tcx.vtable_trait_upcasting_coercion_new_vptr_slot((source, target)); if let Some(entry_idx) = vptr_entry_idx { let entry_idx = u32::try_from(entry_idx).unwrap(); |
