@@ -6,13 +6,14 @@ use rustc_ast::token::{self, Delimiter, IdentIsRaw, Lit, LitKind, Nonterminal, T
6
6
use rustc_ast:: tokenstream:: { DelimSpacing , DelimSpan , Spacing , TokenStream , TokenTree } ;
7
7
use rustc_data_structures:: fx:: FxHashMap ;
8
8
use rustc_data_structures:: sync:: Lrc ;
9
+ use rustc_data_structures:: unord:: UnordMap ;
9
10
use rustc_errors:: { Diag , DiagCtxtHandle , PResult , pluralize} ;
10
11
use rustc_parse:: lexer:: nfc_normalize;
11
12
use rustc_parse:: parser:: ParseNtResult ;
12
13
use rustc_session:: parse:: { ParseSess , SymbolGallery } ;
13
14
use rustc_span:: hygiene:: { LocalExpnId , Transparency } ;
14
15
use rustc_span:: {
15
- Ident , MacroRulesNormalizedIdent , Span , Symbol , SyntaxContext , sym, with_metavar_spans ,
16
+ Ident , MacroRulesNormalizedIdent , Span , Symbol , SyntaxContext , sym, with_metavar_spans_mut ,
16
17
} ;
17
18
use smallvec:: { SmallVec , smallvec} ;
18
19
@@ -282,13 +283,13 @@ pub(super) fn transcribe<'a>(
282
283
}
283
284
MatchedSingle ( ParseNtResult :: Ident ( ident, is_raw) ) => {
284
285
marker. visit_span ( & mut sp) ;
285
- with_metavar_spans ( |mspans| mspans. insert ( ident. span , sp) ) ;
286
+ with_metavar_spans_mut ( |mspans| mspans. insert ( ident. span , sp) ) ;
286
287
let kind = token:: NtIdent ( * ident, * is_raw) ;
287
288
TokenTree :: token_alone ( kind, sp)
288
289
}
289
290
MatchedSingle ( ParseNtResult :: Lifetime ( ident, is_raw) ) => {
290
291
marker. visit_span ( & mut sp) ;
291
- with_metavar_spans ( |mspans| mspans. insert ( ident. span , sp) ) ;
292
+ with_metavar_spans_mut ( |mspans| mspans. insert ( ident. span , sp) ) ;
292
293
let kind = token:: NtLifetime ( * ident, * is_raw) ;
293
294
TokenTree :: token_alone ( kind, sp)
294
295
}
@@ -298,7 +299,7 @@ pub(super) fn transcribe<'a>(
298
299
// `Interpolated` is currently used for such groups in rustc parser.
299
300
marker. visit_span ( & mut sp) ;
300
301
let use_span = nt. use_span ( ) ;
301
- with_metavar_spans ( |mspans| mspans. insert ( use_span, sp) ) ;
302
+ with_metavar_spans_mut ( |mspans| mspans. insert ( use_span, sp) ) ;
302
303
TokenTree :: token_alone ( token:: Interpolated ( Lrc :: clone ( nt) ) , sp)
303
304
}
304
305
MatchedSeq ( ..) => {
@@ -414,16 +415,16 @@ fn maybe_use_metavar_location(
414
415
return orig_tt. clone ( ) ;
415
416
}
416
417
417
- let insert = |mspans : & mut FxHashMap < _ , _ > , s, ms| match mspans. try_insert ( s, ms) {
418
+ let insert = |mspans : & mut UnordMap < _ , _ > , s, ms| match mspans. try_insert ( s, ms) {
418
419
Ok ( _) => true ,
419
420
Err ( err) => * err. entry . get ( ) == ms, // Tried to insert the same span, still success
420
421
} ;
421
422
marker. visit_span ( & mut metavar_span) ;
422
423
let no_collision = match orig_tt {
423
424
TokenTree :: Token ( token, ..) => {
424
- with_metavar_spans ( |mspans| insert ( mspans, token. span , metavar_span) )
425
+ with_metavar_spans_mut ( |mspans| insert ( mspans, token. span , metavar_span) )
425
426
}
426
- TokenTree :: Delimited ( dspan, ..) => with_metavar_spans ( |mspans| {
427
+ TokenTree :: Delimited ( dspan, ..) => with_metavar_spans_mut ( |mspans| {
427
428
insert ( mspans, dspan. open , metavar_span)
428
429
&& insert ( mspans, dspan. close , metavar_span)
429
430
&& insert ( mspans, dspan. entire ( ) , metavar_span)
@@ -438,13 +439,13 @@ fn maybe_use_metavar_location(
438
439
match orig_tt {
439
440
TokenTree :: Token ( Token { kind, span } , spacing) => {
440
441
let span = metavar_span. with_ctxt ( span. ctxt ( ) ) ;
441
- with_metavar_spans ( |mspans| insert ( mspans, span, metavar_span) ) ;
442
+ with_metavar_spans_mut ( |mspans| insert ( mspans, span, metavar_span) ) ;
442
443
TokenTree :: Token ( Token { kind : kind. clone ( ) , span } , * spacing)
443
444
}
444
445
TokenTree :: Delimited ( dspan, dspacing, delimiter, tts) => {
445
446
let open = metavar_span. with_ctxt ( dspan. open . ctxt ( ) ) ;
446
447
let close = metavar_span. with_ctxt ( dspan. close . ctxt ( ) ) ;
447
- with_metavar_spans ( |mspans| {
448
+ with_metavar_spans_mut ( |mspans| {
448
449
insert ( mspans, open, metavar_span) && insert ( mspans, close, metavar_span)
449
450
} ) ;
450
451
let dspan = DelimSpan :: from_pair ( open, close) ;
0 commit comments