11use core:: cell:: RefCell ;
22use core:: ptr:: * ;
3- use std:: fmt:: Display ;
3+ use std:: fmt:: { Debug , Display } ;
44
55#[ test]
66fn test_const_from_raw_parts ( ) {
@@ -452,20 +452,25 @@ fn ptr_metadata() {
452452 assert_eq ! ( metadata( dst_struct) , 3_usize ) ;
453453 }
454454
455- let vtable_1: DynMetadata = metadata ( & 4_u32 as & dyn Display ) ;
456- let vtable_2: DynMetadata = metadata ( & ( true , 7_u32 ) as & ( bool , dyn Display ) ) ;
457- let vtable_3: DynMetadata = metadata ( & Pair ( true , 7_u32 ) as & Pair < bool , dyn Display > ) ;
458- let vtable_4: DynMetadata = metadata ( & 4_u16 as & dyn Display ) ;
455+ let vtable_1: DynMetadata < dyn Debug > = metadata ( & 4_u16 as & dyn Debug ) ;
456+ let vtable_2: DynMetadata < dyn Display > = metadata ( & 4_u16 as & dyn Display ) ;
457+ let vtable_3: DynMetadata < dyn Display > = metadata ( & 4_u32 as & dyn Display ) ;
458+ let vtable_4: DynMetadata < dyn Display > = metadata ( & ( true , 7_u32 ) as & ( bool , dyn Display ) ) ;
459+ let vtable_5: DynMetadata < dyn Display > =
460+ metadata ( & Pair ( true , 7_u32 ) as & Pair < bool , dyn Display > ) ;
459461 unsafe {
460462 let address_1: usize = std:: mem:: transmute ( vtable_1) ;
461463 let address_2: usize = std:: mem:: transmute ( vtable_2) ;
462464 let address_3: usize = std:: mem:: transmute ( vtable_3) ;
463465 let address_4: usize = std:: mem:: transmute ( vtable_4) ;
464- // Same erased type and same trait: same vtable pointer
465- assert_eq ! ( address_1, address_2) ;
466- assert_eq ! ( address_1, address_3) ;
467- // Different erased type: different vtable pointer
468- assert_ne ! ( address_1, address_4) ;
466+ let address_5: usize = std:: mem:: transmute ( vtable_5) ;
467+ // Different trait => different vtable pointer
468+ assert_ne ! ( address_1, address_2) ;
469+ // Different erased type => different vtable pointer
470+ assert_ne ! ( address_2, address_3) ;
471+ // Same erased type and same trait => same vtable pointer
472+ assert_eq ! ( address_3, address_4) ;
473+ assert_eq ! ( address_3, address_5) ;
469474 }
470475}
471476
@@ -486,11 +491,11 @@ fn ptr_metadata_bounds() {
486491
487492 // For this reason, let’s check here that bounds are satisfied:
488493
489- static_assert_expected_bounds_for_metadata :: < ( ) > ( ) ;
490- static_assert_expected_bounds_for_metadata :: < usize > ( ) ;
491- static_assert_expected_bounds_for_metadata :: < DynMetadata > ( ) ;
492- fn static_assert_associated_type < T : ?Sized > ( ) {
493- static_assert_expected_bounds_for_metadata :: < <T as Pointee >:: Metadata > ( )
494+ let _ = static_assert_expected_bounds_for_metadata :: < ( ) > ;
495+ let _ = static_assert_expected_bounds_for_metadata :: < usize > ;
496+ let _ = static_assert_expected_bounds_for_metadata :: < DynMetadata < dyn Display > > ;
497+ fn _static_assert_associated_type < T : ?Sized > ( ) {
498+ let _ = static_assert_expected_bounds_for_metadata :: < <T as Pointee >:: Metadata > ;
494499 }
495500
496501 fn static_assert_expected_bounds_for_metadata < Meta > ( )
0 commit comments