This commit is contained in:
bjorn3 2024-10-20 13:57:42 +00:00
commit 383bb665d2

View File

@ -34,7 +34,9 @@ pub(crate) fn unsized_info<'tcx>(
{ {
let old_info = let old_info =
old_info.expect("unsized_info: missing old info for trait upcasting coercion"); old_info.expect("unsized_info: missing old info for trait upcasting coercion");
if data_a.principal_def_id() == data_b.principal_def_id() { let b_principal_def_id = data_b.principal_def_id();
if data_a.principal_def_id() == b_principal_def_id || b_principal_def_id.is_none() {
// A NOP cast that doesn't actually change anything, should be allowed even with invalid vtables.
debug_assert!( debug_assert!(
validate_trivial_unsize(fx.tcx, data_a, data_b), validate_trivial_unsize(fx.tcx, data_a, data_b),
"NOP unsize vtable changed principal trait ref: {data_a} -> {data_b}" "NOP unsize vtable changed principal trait ref: {data_a} -> {data_b}"