Skip to content

Commit bb10e81

Browse files
authored
Rollup merge of rust-lang#137728 - Darksonn:no-tuple-unsize, r=oli-obk
Remove unsizing coercions for tuples See rust-lang#42877 (comment) and below comments for justification. Tracking issue: rust-lang#42877 Fixes: rust-lang#135217
2 parents 49fc029 + bcf698c commit bb10e81

File tree

2 files changed

+1
-10
lines changed

2 files changed

+1
-10
lines changed

Diff for: coretests/tests/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@
8787
#![feature(try_find)]
8888
#![feature(try_trait_v2)]
8989
#![feature(unsize)]
90-
#![feature(unsized_tuple_coercion)]
9190
#![feature(unwrap_infallible)]
9291
// tidy-alphabetical-end
9392
#![allow(internal_features)]

Diff for: coretests/tests/ptr.rs

+1-9
Original file line numberDiff line numberDiff line change
@@ -525,31 +525,24 @@ fn ptr_metadata() {
525525
assert_eq!(metadata("foo"), 3_usize);
526526
assert_eq!(metadata(&[4, 7][..]), 2_usize);
527527

528-
let dst_tuple: &(bool, [u8]) = &(true, [0x66, 0x6F, 0x6F]);
529528
let dst_struct: &Pair<bool, [u8]> = &Pair(true, [0x66, 0x6F, 0x6F]);
530-
assert_eq!(metadata(dst_tuple), 3_usize);
531529
assert_eq!(metadata(dst_struct), 3_usize);
532530
unsafe {
533-
let dst_tuple: &(bool, str) = std::mem::transmute(dst_tuple);
534531
let dst_struct: &Pair<bool, str> = std::mem::transmute(dst_struct);
535-
assert_eq!(&dst_tuple.1, "foo");
536532
assert_eq!(&dst_struct.1, "foo");
537-
assert_eq!(metadata(dst_tuple), 3_usize);
538533
assert_eq!(metadata(dst_struct), 3_usize);
539534
}
540535

541536
let vtable_1: DynMetadata<dyn Debug> = metadata(&4_u16 as &dyn Debug);
542537
let vtable_2: DynMetadata<dyn Display> = metadata(&4_u16 as &dyn Display);
543538
let vtable_3: DynMetadata<dyn Display> = metadata(&4_u32 as &dyn Display);
544-
let vtable_4: DynMetadata<dyn Display> = metadata(&(true, 7_u32) as &(bool, dyn Display));
545-
let vtable_5: DynMetadata<dyn Display> =
539+
let vtable_4: DynMetadata<dyn Display> =
546540
metadata(&Pair(true, 7_u32) as &Pair<bool, dyn Display>);
547541
unsafe {
548542
let address_1: *const () = std::mem::transmute(vtable_1);
549543
let address_2: *const () = std::mem::transmute(vtable_2);
550544
let address_3: *const () = std::mem::transmute(vtable_3);
551545
let address_4: *const () = std::mem::transmute(vtable_4);
552-
let address_5: *const () = std::mem::transmute(vtable_5);
553546
// Different trait => different vtable pointer
554547
assert_ne!(address_1, address_2);
555548
// Different erased type => different vtable pointer
@@ -558,7 +551,6 @@ fn ptr_metadata() {
558551
// This is *not guaranteed*, so we skip it in Miri.
559552
if !cfg!(miri) {
560553
assert_eq!(address_3, address_4);
561-
assert_eq!(address_3, address_5);
562554
}
563555
}
564556
}

0 commit comments

Comments
 (0)