@@ -79,33 +79,35 @@ pub fn expand_eager_macro_input(
7979 return Ok ( ExpandResult { value : None , err } ) ;
8080 } ;
8181
82- let og_tmap = mbe:: syntax_node_to_token_map (
83- macro_call. value . token_tree ( ) . expect ( "macro_arg_text succeeded" ) . syntax ( ) ,
84- ) ;
85-
8682 let ( mut subtree, expanded_eager_input_token_map) =
8783 mbe:: syntax_node_to_token_tree ( & expanded_eager_input) ;
8884
89- // The tokenmap and ids of subtree point into the expanded syntax node, but that is inaccessible from the outside
90- // so we need to remap them to the original input of the eager macro.
91- subtree. visit_ids ( & |id| {
92- // Note: we discard all token ids of braces and the like here, but that's not too bad and only a temporary fix
85+ let og_tmap = if let Some ( tt) = macro_call. value . token_tree ( ) {
86+ let og_tmap = mbe:: syntax_node_to_token_map ( tt. syntax ( ) ) ;
87+ // The tokenmap and ids of subtree point into the expanded syntax node, but that is inaccessible from the outside
88+ // so we need to remap them to the original input of the eager macro.
89+ subtree. visit_ids ( & |id| {
90+ // Note: we discard all token ids of braces and the like here, but that's not too bad and only a temporary fix
9391
94- if let Some ( range) =
95- expanded_eager_input_token_map. first_range_by_token ( id, syntax:: SyntaxKind :: TOMBSTONE )
96- {
97- // remap from expanded eager input to eager input expansion
98- if let Some ( og_range) = mapping. get ( & range) {
99- // remap from eager input expansion to original eager input
100- if let Some ( & og_range) = ws_mapping. get ( og_range) {
101- if let Some ( og_token) = og_tmap. token_by_range ( og_range) {
102- return og_token;
92+ if let Some ( range) = expanded_eager_input_token_map
93+ . first_range_by_token ( id, syntax:: SyntaxKind :: TOMBSTONE )
94+ {
95+ // remap from expanded eager input to eager input expansion
96+ if let Some ( og_range) = mapping. get ( & range) {
97+ // remap from eager input expansion to original eager input
98+ if let Some ( & og_range) = ws_mapping. get ( og_range) {
99+ if let Some ( og_token) = og_tmap. token_by_range ( og_range) {
100+ return og_token;
101+ }
103102 }
104103 }
105104 }
106- }
107- tt:: TokenId :: UNSPECIFIED
108- } ) ;
105+ tt:: TokenId :: UNSPECIFIED
106+ } ) ;
107+ og_tmap
108+ } else {
109+ Default :: default ( )
110+ } ;
109111 subtree. delimiter = crate :: tt:: Delimiter :: unspecified ( ) ;
110112
111113 let loc = MacroCallLoc {
0 commit comments