@@ -199,37 +199,29 @@ pub(super) fn from_token_tree<Span: Copy>(
199199 }
200200
201201 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) ;
233225 TokenStream { token_trees }
234226 }
235227
0 commit comments