@@ -97,7 +97,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
9797 Ok ( ( ) )
9898 }
9999
100- fn misc_cast (
100+ pub fn misc_cast (
101101 & self ,
102102 src : & ImmTy < ' tcx , M :: PointerTag > ,
103103 cast_ty : Ty < ' tcx > ,
@@ -139,7 +139,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
139139 if let Some ( discr) = src. layout . ty . discriminant_for_variant ( * self . tcx , index) {
140140 assert ! ( src. layout. is_zst( ) ) ;
141141 let discr_layout = self . layout_of ( discr. ty ) ?;
142- return Ok ( self . cast_from_scalar ( discr. val , discr_layout, cast_ty) . into ( ) ) ;
142+ return Ok ( self . cast_from_int_like ( discr. val , discr_layout, cast_ty) . into ( ) ) ;
143143 }
144144 }
145145 Variants :: Multiple { .. } => { }
@@ -169,17 +169,17 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
169169 }
170170 }
171171
172- // # The remaining source values are scalar.
172+ // # The remaining source values are scalar and "int-like" .
173173
174174 // For all remaining casts, we either
175175 // (a) cast a raw ptr to usize, or
176176 // (b) cast from an integer-like (including bool, char, enums).
177177 // In both cases we want the bits.
178178 let bits = src. to_scalar ( ) ?. to_bits ( src. layout . size ) ?;
179- Ok ( self . cast_from_scalar ( bits, src. layout , cast_ty) . into ( ) )
179+ Ok ( self . cast_from_int_like ( bits, src. layout , cast_ty) . into ( ) )
180180 }
181181
182- pub ( super ) fn cast_from_scalar (
182+ fn cast_from_int_like (
183183 & self ,
184184 v : u128 , // raw bits (there is no ScalarTy so we separate data+layout)
185185 src_layout : TyAndLayout < ' tcx > ,
0 commit comments