@@ -199,37 +199,29 @@ pub(super) fn from_token_tree<Span: Copy>(
199
199
}
200
200
201
201
bridge:: TokenTree :: Literal ( literal) => {
202
- let token_trees =
203
- if let Some ( ( _minus, symbol) ) = literal. symbol . as_str ( ) . split_once ( '-' ) {
204
- let punct = tt:: Punct {
205
- spacing : tt:: Spacing :: Alone ,
206
- span : literal. span ,
207
- char : '-' as char ,
208
- } ;
209
- let leaf: tt:: Leaf < Span > = tt:: Leaf :: from ( punct) ;
210
- let minus_tree = tt:: TokenTree :: from ( leaf) ;
211
-
212
- let literal = tt:: Literal {
213
- symbol : Symbol :: intern ( symbol) ,
214
- suffix : literal. suffix ,
215
- span : literal. span ,
216
- kind : literal_kind_to_internal ( literal. kind ) ,
217
- } ;
218
- let leaf: tt:: Leaf < Span > = tt:: Leaf :: from ( literal) ;
219
- let tree = tt:: TokenTree :: from ( leaf) ;
220
- vec ! [ minus_tree, tree]
221
- } else {
222
- let literal = tt:: Literal {
223
- symbol : literal. symbol ,
224
- suffix : literal. suffix ,
225
- span : literal. span ,
226
- kind : literal_kind_to_internal ( literal. kind ) ,
227
- } ;
228
-
229
- let leaf: tt:: Leaf < Span > = tt:: Leaf :: from ( literal) ;
230
- let tree = tt:: TokenTree :: from ( leaf) ;
231
- vec ! [ tree]
232
- } ;
202
+ let mut token_trees = Vec :: new ( ) ;
203
+ let mut symbol = literal. symbol ;
204
+ if matches ! (
205
+ literal. kind,
206
+ proc_macro:: bridge:: LitKind :: Integer | proc_macro:: bridge:: LitKind :: Float
207
+ ) && symbol. as_str ( ) . starts_with ( '-' )
208
+ {
209
+ token_trees. push ( tt:: TokenTree :: Leaf ( tt:: Leaf :: Punct ( tt:: Punct {
210
+ spacing : tt:: Spacing :: Alone ,
211
+ span : literal. span ,
212
+ char : '-' as char ,
213
+ } ) ) ) ;
214
+ symbol = Symbol :: intern ( & symbol. as_str ( ) [ 1 ..] ) ;
215
+ }
216
+ let literal = tt:: Literal {
217
+ symbol,
218
+ suffix : literal. suffix ,
219
+ span : literal. span ,
220
+ kind : literal_kind_to_internal ( literal. kind ) ,
221
+ } ;
222
+ let leaf: tt:: Leaf < Span > = tt:: Leaf :: from ( literal) ;
223
+ let tree = tt:: TokenTree :: from ( leaf) ;
224
+ token_trees. push ( tree) ;
233
225
TokenStream { token_trees }
234
226
}
235
227
0 commit comments