7
7
// normalize-stderr-test "allocation \d+" -> "allocation N"
8
8
// normalize-stderr-test "size \d+" -> "size N"
9
9
10
+ #[ repr( C ) ]
10
11
union BoolTransmute {
11
12
val : u8 ,
12
13
bl : bool ,
@@ -26,6 +27,7 @@ struct BadSliceRepr {
26
27
len : & ' static u8 ,
27
28
}
28
29
30
+ #[ repr( C ) ]
29
31
union SliceTransmute {
30
32
repr : SliceRepr ,
31
33
bad : BadSliceRepr ,
@@ -58,6 +60,7 @@ struct BadDynRepr {
58
60
vtable : usize ,
59
61
}
60
62
63
+ #[ repr( C ) ]
61
64
union DynTransmute {
62
65
repr : DynRepr ,
63
66
repr2 : DynRepr2 ,
@@ -91,10 +94,10 @@ const MY_STR_LENGTH_PTR: &MyStr = unsafe { SliceTransmute { bad: BadSliceRepr {
91
94
//~^ ERROR it is undefined behavior to use this value
92
95
93
96
// invalid UTF-8
94
- const J1 : & str = unsafe { SliceTransmute { slice : & [ 0xFF ] } . str } ;
97
+ const STR_NO_UTF8 : & str = unsafe { SliceTransmute { slice : & [ 0xFF ] } . str } ;
95
98
//~^ ERROR it is undefined behavior to use this value
96
99
// 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 } ;
98
101
//~^ ERROR it is undefined behavior to use this value
99
102
100
103
// # slice
@@ -111,16 +114,16 @@ const SLICE_LENGTH_PTR: &[u8] = unsafe { SliceTransmute { bad: BadSliceRepr { pt
111
114
//~^ ERROR it is undefined behavior to use this value
112
115
113
116
// 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 } ] ;
115
118
//~^ ERROR it is undefined behavior to use this value
116
119
117
120
// good MySliceBool
118
- const I1 : & MySliceBool = & MySlice ( true , [ false ] ) ;
121
+ const MYSLICE_GOOD : & MySliceBool = & MySlice ( true , [ false ] ) ;
119
122
// 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 ] ) ;
121
124
//~^ ERROR it is undefined behavior to use this value
122
125
// 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 } ] ) ;
124
127
//~^ ERROR it is undefined behavior to use this value
125
128
126
129
// # raw slice
@@ -132,17 +135,17 @@ const RAW_SLICE_LENGTH_UNINIT: *const [u8] = unsafe { SliceTransmute { addr: 42
132
135
133
136
// # trait object
134
137
// 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 } ;
136
139
//~^ ERROR it is undefined behavior to use this value
137
140
// 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 } ;
139
142
//~^ ERROR it is undefined behavior to use this value
140
143
// 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 } ;
142
145
//~^ ERROR it is undefined behavior to use this value
143
146
144
147
// 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 } ;
146
149
//~^ ERROR it is undefined behavior to use this value
147
150
148
151
// # raw trait object
0 commit comments