@@ -123,10 +123,10 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
123
123
match src. layout . ty . kind ( ) {
124
124
// Floating point
125
125
Float ( FloatTy :: F32 ) => {
126
- return Ok ( self . cast_from_float ( src. to_scalar ( ) ? . to_f32 ( ) ?, cast_ty) . into ( ) ) ;
126
+ return Ok ( self . cast_from_float ( src. to_scalar ( ) . to_f32 ( ) ?, cast_ty) . into ( ) ) ;
127
127
}
128
128
Float ( FloatTy :: F64 ) => {
129
- return Ok ( self . cast_from_float ( src. to_scalar ( ) ? . to_f64 ( ) ?, cast_ty) . into ( ) ) ;
129
+ return Ok ( self . cast_from_float ( src. to_scalar ( ) . to_f64 ( ) ?, cast_ty) . into ( ) ) ;
130
130
}
131
131
// The rest is integer/pointer-"like", including fn ptr casts
132
132
_ => assert ! (
@@ -153,7 +153,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
153
153
assert_eq ! ( dest_layout. size, self . pointer_size( ) ) ;
154
154
assert ! ( src. layout. ty. is_unsafe_ptr( ) ) ;
155
155
return match * * src {
156
- Immediate :: ScalarPair ( data, _) => Ok ( data. check_init ( ) ? . into ( ) ) ,
156
+ Immediate :: ScalarPair ( data, _) => Ok ( data. into ( ) ) ,
157
157
Immediate :: Scalar ( ..) => span_bug ! (
158
158
self . cur_span( ) ,
159
159
"{:?} input to a fat-to-thin cast ({:?} -> {:?})" ,
@@ -167,7 +167,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
167
167
}
168
168
169
169
// # The remaining source values are scalar and "int-like".
170
- let scalar = src. to_scalar ( ) ? ;
170
+ let scalar = src. to_scalar ( ) ;
171
171
Ok ( self . cast_from_int_like ( scalar, src. layout , cast_ty) ?. into ( ) )
172
172
}
173
173
@@ -179,7 +179,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
179
179
assert_matches ! ( src. layout. ty. kind( ) , ty:: RawPtr ( _) | ty:: FnPtr ( _) ) ;
180
180
assert ! ( cast_ty. is_integral( ) ) ;
181
181
182
- let scalar = src. to_scalar ( ) ? ;
182
+ let scalar = src. to_scalar ( ) ;
183
183
let ptr = scalar. to_pointer ( self ) ?;
184
184
match ptr. into_pointer_or_addr ( ) {
185
185
Ok ( ptr) => M :: expose_ptr ( self , ptr) ?,
@@ -197,7 +197,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
197
197
assert_matches ! ( cast_ty. kind( ) , ty:: RawPtr ( _) ) ;
198
198
199
199
// First cast to usize.
200
- let scalar = src. to_scalar ( ) ? ;
200
+ let scalar = src. to_scalar ( ) ;
201
201
let addr = self . cast_from_int_like ( scalar, src. layout , self . tcx . types . usize ) ?;
202
202
let addr = addr. to_machine_usize ( self ) ?;
203
203
@@ -291,7 +291,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
291
291
292
292
match ( & src_pointee_ty. kind ( ) , & dest_pointee_ty. kind ( ) ) {
293
293
( & ty:: Array ( _, length) , & ty:: Slice ( _) ) => {
294
- let ptr = self . read_immediate ( src) ? . to_scalar ( ) ?;
294
+ let ptr = self . read_scalar ( src) ?;
295
295
// u64 cast is from usize to u64, which is always good
296
296
let val =
297
297
Immediate :: new_slice ( ptr, length. eval_usize ( * self . tcx , self . param_env ) , self ) ;
@@ -303,7 +303,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
303
303
// A NOP cast that doesn't actually change anything, should be allowed even with mismatching vtables.
304
304
return self . write_immediate ( * val, dest) ;
305
305
}
306
- let ( old_data, old_vptr) = val. to_scalar_pair ( ) ? ;
306
+ let ( old_data, old_vptr) = val. to_scalar_pair ( ) ;
307
307
let old_vptr = old_vptr. to_pointer ( self ) ?;
308
308
let ( ty, old_trait) = self . get_ptr_vtable ( old_vptr) ?;
309
309
if old_trait != data_a. principal ( ) {
@@ -315,7 +315,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
315
315
( _, & ty:: Dynamic ( ref data, _) ) => {
316
316
// Initial cast from sized to dyn trait
317
317
let vtable = self . get_vtable_ptr ( src_pointee_ty, data. principal ( ) ) ?;
318
- let ptr = self . read_immediate ( src) ? . to_scalar ( ) ?;
318
+ let ptr = self . read_scalar ( src) ?;
319
319
let val = Immediate :: new_dyn_trait ( ptr, vtable, & * self . tcx ) ;
320
320
self . write_immediate ( val, dest)
321
321
}
0 commit comments