77// normalize-stderr-test "allocation \d+" -> "allocation N"
88// normalize-stderr-test "size \d+" -> "size N"
99
10+ #[ repr( C ) ]
1011union BoolTransmute {
1112 val : u8 ,
1213 bl : bool ,
@@ -26,6 +27,7 @@ struct BadSliceRepr {
2627 len : & ' static u8 ,
2728}
2829
30+ #[ repr( C ) ]
2931union SliceTransmute {
3032 repr : SliceRepr ,
3133 bad : BadSliceRepr ,
@@ -58,6 +60,7 @@ struct BadDynRepr {
5860 vtable : usize ,
5961}
6062
63+ #[ repr( C ) ]
6164union DynTransmute {
6265 repr : DynRepr ,
6366 repr2 : DynRepr2 ,
@@ -91,10 +94,10 @@ const MY_STR_LENGTH_PTR: &MyStr = unsafe { SliceTransmute { bad: BadSliceRepr {
9194//~^ ERROR it is undefined behavior to use this value
9295
9396// invalid UTF-8
94- const J1 : & str = unsafe { SliceTransmute { slice : & [ 0xFF ] } . str } ;
97+ const STR_NO_UTF8 : & str = unsafe { SliceTransmute { slice : & [ 0xFF ] } . str } ;
9598//~^ ERROR it is undefined behavior to use this value
9699// invalid UTF-8 in user-defined str-like
97- const J2 : & MyStr = unsafe { SliceTransmute { slice : & [ 0xFF ] } . my_str } ;
100+ const MYSTR_NO_UTF8 : & MyStr = unsafe { SliceTransmute { slice : & [ 0xFF ] } . my_str } ;
98101//~^ ERROR it is undefined behavior to use this value
99102
100103// # slice
@@ -111,16 +114,16 @@ const SLICE_LENGTH_PTR: &[u8] = unsafe { SliceTransmute { bad: BadSliceRepr { pt
111114//~^ ERROR it is undefined behavior to use this value
112115
113116// bad data *inside* the slice
114- const H : & [ bool ] = & [ unsafe { BoolTransmute { val : 3 } . bl } ] ;
117+ const SLICE_CONTENT_INVALID : & [ bool ] = & [ unsafe { BoolTransmute { val : 3 } . bl } ] ;
115118//~^ ERROR it is undefined behavior to use this value
116119
117120// good MySliceBool
118- const I1 : & MySliceBool = & MySlice ( true , [ false ] ) ;
121+ const MYSLICE_GOOD : & MySliceBool = & MySlice ( true , [ false ] ) ;
119122// bad: sized field is not okay
120- const I2 : & MySliceBool = & MySlice ( unsafe { BoolTransmute { val : 3 } . bl } , [ false ] ) ;
123+ const MYSLICE_PREFIX_BAD : & MySliceBool = & MySlice ( unsafe { BoolTransmute { val : 3 } . bl } , [ false ] ) ;
121124//~^ ERROR it is undefined behavior to use this value
122125// bad: unsized part is not okay
123- const I3 : & MySliceBool = & MySlice ( true , [ unsafe { BoolTransmute { val : 3 } . bl } ] ) ;
126+ const MYSLICE_SUFFIX_BAD : & MySliceBool = & MySlice ( true , [ unsafe { BoolTransmute { val : 3 } . bl } ] ) ;
124127//~^ ERROR it is undefined behavior to use this value
125128
126129// # raw slice
@@ -132,17 +135,17 @@ const RAW_SLICE_LENGTH_UNINIT: *const [u8] = unsafe { SliceTransmute { addr: 42
132135
133136// # trait object
134137// bad trait object
135- const D : & dyn Trait = unsafe { DynTransmute { repr : DynRepr { ptr : & 92 , vtable : & 3 } } . rust } ;
138+ const TRAIT_OBJ_SHORT_VTABLE_1 : & dyn Trait = unsafe { DynTransmute { repr : DynRepr { ptr : & 92 , vtable : & 3 } } . rust } ;
136139//~^ ERROR it is undefined behavior to use this value
137140// bad trait object
138- const E : & dyn Trait = unsafe { DynTransmute { repr2 : DynRepr2 { ptr : & 92 , vtable : & 3 } } . rust } ;
141+ const TRAIT_OBJ_SHORT_VTABLE_2 : & dyn Trait = unsafe { DynTransmute { repr2 : DynRepr2 { ptr : & 92 , vtable : & 3 } } . rust } ;
139142//~^ ERROR it is undefined behavior to use this value
140143// bad trait object
141- const F : & dyn Trait = unsafe { DynTransmute { bad : BadDynRepr { ptr : & 92 , vtable : 3 } } . rust } ;
144+ const TRAIT_OBJ_INT_VTABLE : & dyn Trait = unsafe { DynTransmute { bad : BadDynRepr { ptr : & 92 , vtable : 3 } } . rust } ;
142145//~^ ERROR it is undefined behavior to use this value
143146
144147// bad data *inside* the trait object
145- const G : & dyn Trait = & unsafe { BoolTransmute { val : 3 } . bl } ;
148+ const TRAIT_OBJ_CONTENT_INVALID : & dyn Trait = & unsafe { BoolTransmute { val : 3 } . bl } ;
146149//~^ ERROR it is undefined behavior to use this value
147150
148151// # raw trait object
0 commit comments