@@ -79,27 +79,25 @@ impl<'tcx> ExprVisitor<'tcx> {
79
79
// Special-case transmuting from `typeof(function)` and
80
80
// `Option<typeof(function)>` to present a clearer error.
81
81
let from = unpack_option_like ( self . tcx , from) ;
82
- if let ( & ty:: FnDef ( ..) , SizeSkeleton :: Known ( size_to) ) = ( from. kind ( ) , sk_to) {
83
- if size_to == Pointer . size ( & self . tcx ) {
84
- struct_span_err ! ( self . tcx. sess, span, E0591 , "can't transmute zero-sized type" )
85
- . note ( & format ! ( "source type: {}" , from) )
86
- . note ( & format ! ( "target type: {}" , to) )
87
- . help ( "cast with `as` to a pointer instead" )
88
- . emit ( ) ;
89
- return ;
90
- }
82
+ if let ( & ty:: FnDef ( ..) , SizeSkeleton :: Known ( size_to) ) = ( from. kind ( ) , sk_to) && size_to == Pointer . size ( & self . tcx ) {
83
+ struct_span_err ! ( self . tcx. sess, span, E0591 , "can't transmute zero-sized type" )
84
+ . note ( & format ! ( "source type: {from}" ) )
85
+ . note ( & format ! ( "target type: {to}" ) )
86
+ . help ( "cast with `as` to a pointer instead" )
87
+ . emit ( ) ;
88
+ return ;
91
89
}
92
90
}
93
91
94
92
// Try to display a sensible error with as much information as possible.
95
93
let skeleton_string = |ty : Ty < ' tcx > , sk| match sk {
96
94
Ok ( SizeSkeleton :: Known ( size) ) => format ! ( "{} bits" , size. bits( ) ) ,
97
- Ok ( SizeSkeleton :: Pointer { tail, .. } ) => format ! ( "pointer to `{}`" , tail ) ,
95
+ Ok ( SizeSkeleton :: Pointer { tail, .. } ) => format ! ( "pointer to `{tail }`" ) ,
98
96
Err ( LayoutError :: Unknown ( bad) ) => {
99
97
if bad == ty {
100
98
"this type does not have a fixed size" . to_owned ( )
101
99
} else {
102
- format ! ( "size can vary because of {}" , bad )
100
+ format ! ( "size can vary because of {bad}" )
103
101
}
104
102
}
105
103
Err ( err) => err. to_string ( ) ,
@@ -113,7 +111,7 @@ impl<'tcx> ExprVisitor<'tcx> {
113
111
or dependently-sized types"
114
112
) ;
115
113
if from == to {
116
- err. note ( & format ! ( "`{}` does not have a fixed size" , from ) ) ;
114
+ err. note ( & format ! ( "`{from }` does not have a fixed size" ) ) ;
117
115
} else {
118
116
err. note ( & format ! ( "source type: `{}` ({})" , from, skeleton_string( from, sk_from) ) )
119
117
. note ( & format ! ( "target type: `{}` ({})" , to, skeleton_string( to, sk_to) ) ) ;
@@ -201,7 +199,7 @@ impl<'tcx> ExprVisitor<'tcx> {
201
199
_ => None ,
202
200
} ;
203
201
let Some ( asm_ty) = asm_ty else {
204
- let msg = & format ! ( "cannot use value of type `{}` for inline assembly" , ty ) ;
202
+ let msg = & format ! ( "cannot use value of type `{ty }` for inline assembly" ) ;
205
203
let mut err = self . tcx . sess . struct_span_err ( expr. span , msg) ;
206
204
err. note (
207
205
"only integers, floats, SIMD vectors, pointers and function pointers \
@@ -216,7 +214,7 @@ impl<'tcx> ExprVisitor<'tcx> {
216
214
if !ty. is_copy_modulo_regions ( self . tcx . at ( DUMMY_SP ) , self . param_env ) {
217
215
let msg = "arguments for inline assembly must be copyable" ;
218
216
let mut err = self . tcx . sess . struct_span_err ( expr. span , msg) ;
219
- err. note ( & format ! ( "`{}` does not implement the Copy trait" , ty ) ) ;
217
+ err. note ( & format ! ( "`{ty }` does not implement the Copy trait" ) ) ;
220
218
err. emit ( ) ;
221
219
}
222
220
@@ -237,7 +235,7 @@ impl<'tcx> ExprVisitor<'tcx> {
237
235
in_expr. span ,
238
236
& format ! ( "type `{}`" , self . typeck_results. expr_ty_adjusted( in_expr) ) ,
239
237
) ;
240
- err. span_label ( expr. span , & format ! ( "type `{}`" , ty ) ) ;
238
+ err. span_label ( expr. span , & format ! ( "type `{ty }`" ) ) ;
241
239
err. note (
242
240
"asm inout arguments must have the same type, \
243
241
unless they are both pointers or integers of the same size",
@@ -256,7 +254,7 @@ impl<'tcx> ExprVisitor<'tcx> {
256
254
let reg_class = reg. reg_class ( ) ;
257
255
let supported_tys = reg_class. supported_types ( asm_arch) ;
258
256
let Some ( ( _, feature) ) = supported_tys. iter ( ) . find ( |& & ( t, _) | t == asm_ty) else {
259
- let msg = & format ! ( "type `{}` cannot be used with this register class" , ty ) ;
257
+ let msg = & format ! ( "type `{ty }` cannot be used with this register class" ) ;
260
258
let mut err = self . tcx . sess . struct_span_err ( expr. span , msg) ;
261
259
let supported_tys: Vec < _ > =
262
260
supported_tys. iter ( ) . map ( |( t, _) | t. to_string ( ) ) . collect ( ) ;
@@ -326,12 +324,10 @@ impl<'tcx> ExprVisitor<'tcx> {
326
324
let mut err = lint. build ( msg) ;
327
325
err. span_label ( expr. span , "for this argument" ) ;
328
326
err. help ( & format ! (
329
- "use the `{}` modifier to have the register formatted as `{}`" ,
330
- suggested_modifier, suggested_result,
327
+ "use the `{suggested_modifier}` modifier to have the register formatted as `{suggested_result}`" ,
331
328
) ) ;
332
329
err. help ( & format ! (
333
- "or use the `{}` modifier to keep the default formatting of `{}`" ,
334
- default_modifier, default_result,
330
+ "or use the `{default_modifier}` modifier to keep the default formatting of `{default_result}`" ,
335
331
) ) ;
336
332
err. emit ( ) ;
337
333
} ,
@@ -509,14 +505,14 @@ impl<'tcx> Visitor<'tcx> for ExprVisitor<'tcx> {
509
505
match expr. kind {
510
506
hir:: ExprKind :: Path ( ref qpath) => {
511
507
let res = self . typeck_results . qpath_res ( qpath, expr. hir_id ) ;
512
- if let Res :: Def ( DefKind :: Fn , did) = res {
513
- if self . def_id_is_transmute ( did) {
514
- let typ = self . typeck_results . node_type ( expr . hir_id ) ;
515
- let sig = typ . fn_sig ( self . tcx ) ;
516
- let from = sig . inputs ( ) . skip_binder ( ) [ 0 ] ;
517
- let to = sig. output ( ) . skip_binder ( ) ;
518
- self . check_transmute ( expr . span , from , to ) ;
519
- }
508
+ if let Res :: Def ( DefKind :: Fn , did) = res
509
+ && self . def_id_is_transmute ( did)
510
+ {
511
+ let typ = self . typeck_results . node_type ( expr . hir_id ) ;
512
+ let sig = typ . fn_sig ( self . tcx ) ;
513
+ let from = sig. inputs ( ) . skip_binder ( ) [ 0 ] ;
514
+ let to = sig . output ( ) . skip_binder ( ) ;
515
+ self . check_transmute ( expr . span , from , to ) ;
520
516
}
521
517
}
522
518
0 commit comments