@@ -114,19 +114,16 @@ pub fn entry(args: TokenStream, input: TokenStream) -> TokenStream {
114
114
. into_iter ( )
115
115
. map ( |var| {
116
116
let ident = var. ident ;
117
- // `let` can't shadow a `static mut` so we must give the `static` a different
118
- // name. We'll create a new name by appending an underscore to the original name
119
- // of the `static`.
120
- let mut ident_ = ident. to_string ( ) ;
121
- ident_. push ( '_' ) ;
122
- let ident_ = Ident :: new ( & ident_, Span :: call_site ( ) ) ;
123
117
let ty = var. ty ;
124
118
let expr = var. expr ;
125
119
126
120
quote ! (
127
- static mut #ident_: #ty = #expr;
128
121
#[ allow( non_snake_case) ]
129
- let #ident: & ' static mut #ty = unsafe { & mut #ident_ } ;
122
+ let #ident: & ' static mut #ty = unsafe {
123
+ static mut #ident: #ty = #expr;
124
+
125
+ & mut #ident
126
+ } ;
130
127
)
131
128
} ) . collect :: < Vec < _ > > ( ) ;
132
129
@@ -402,19 +399,16 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
402
399
. into_iter ( )
403
400
. map ( |var| {
404
401
let ident = var. ident ;
405
- // `let` can't shadow a `static mut` so we must give the `static` a different
406
- // name. We'll create a new name by appending an underscore to the original name
407
- // of the `static`.
408
- let mut ident_ = ident. to_string ( ) ;
409
- ident_. push ( '_' ) ;
410
- let ident_ = Ident :: new ( & ident_, Span :: call_site ( ) ) ;
411
402
let ty = var. ty ;
412
403
let expr = var. expr ;
413
404
414
405
quote ! (
415
- static mut #ident_: #ty = #expr;
416
406
#[ allow( non_snake_case) ]
417
- let #ident: & mut #ty = unsafe { & mut #ident_ } ;
407
+ let #ident: & mut #ty = unsafe {
408
+ static mut #ident: #ty = #expr;
409
+
410
+ & mut #ident
411
+ } ;
418
412
)
419
413
} ) . collect :: < Vec < _ > > ( ) ;
420
414
@@ -546,19 +540,16 @@ pub fn interrupt(args: TokenStream, input: TokenStream) -> TokenStream {
546
540
. into_iter ( )
547
541
. map ( |var| {
548
542
let ident = var. ident ;
549
- // `let` can't shadow a `static mut` so we must give the `static` a different
550
- // name. We'll create a new name by appending an underscore to the original name
551
- // of the `static`.
552
- let mut ident_ = ident. to_string ( ) ;
553
- ident_. push ( '_' ) ;
554
- let ident_ = Ident :: new ( & ident_, Span :: call_site ( ) ) ;
555
543
let ty = var. ty ;
556
544
let expr = var. expr ;
557
545
558
546
quote ! (
559
- static mut #ident_: #ty = #expr;
560
547
#[ allow( non_snake_case) ]
561
- let #ident: & mut #ty = unsafe { & mut #ident_ } ;
548
+ let #ident: & mut #ty = unsafe {
549
+ static mut #ident: #ty = #expr;
550
+
551
+ & mut #ident
552
+ } ;
562
553
)
563
554
} ) . collect :: < Vec < _ > > ( ) ;
564
555
0 commit comments