diff options
author | Kevin Mehall <[email protected]> | 2021-03-20 18:18:57 +0000 |
---|---|---|
committer | Kevin Mehall <[email protected]> | 2021-03-20 18:28:44 +0000 |
commit | 0a0e22235b7ad222be1aaa7765b580f4096c9aeb (patch) | |
tree | 1742dd3512904541543f1b7a929cbc77cad14402 /crates/mbe/src/syntax_bridge.rs | |
parent | 5cc8ad0c4afda0c8b6222156b0c725cfb61892c0 (diff) |
Make bare underscore token an Ident rather than Punct in proc-macro
Diffstat (limited to 'crates/mbe/src/syntax_bridge.rs')
-rw-r--r-- | crates/mbe/src/syntax_bridge.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index 85163c4b3..8bba3d3d5 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs | |||
@@ -350,7 +350,7 @@ trait TokenConvertor { | |||
350 | return; | 350 | return; |
351 | } | 351 | } |
352 | 352 | ||
353 | result.push(if k.is_punct() { | 353 | result.push(if k.is_punct() && k != UNDERSCORE { |
354 | assert_eq!(range.len(), TextSize::of('.')); | 354 | assert_eq!(range.len(), TextSize::of('.')); |
355 | let delim = match k { | 355 | let delim = match k { |
356 | T!['('] => Some((tt::DelimiterKind::Parenthesis, T![')'])), | 356 | T!['('] => Some((tt::DelimiterKind::Parenthesis, T![')'])), |
@@ -395,7 +395,9 @@ trait TokenConvertor { | |||
395 | { | 395 | { |
396 | tt::Spacing::Alone | 396 | tt::Spacing::Alone |
397 | } | 397 | } |
398 | Some(next) if next.kind().is_punct() => tt::Spacing::Joint, | 398 | Some(next) if next.kind().is_punct() && next.kind() != UNDERSCORE => { |
399 | tt::Spacing::Joint | ||
400 | } | ||
399 | _ => tt::Spacing::Alone, | 401 | _ => tt::Spacing::Alone, |
400 | }; | 402 | }; |
401 | let char = match token.to_char() { | 403 | let char = match token.to_char() { |
@@ -415,6 +417,7 @@ trait TokenConvertor { | |||
415 | let leaf: tt::Leaf = match k { | 417 | let leaf: tt::Leaf = match k { |
416 | T![true] | T![false] => make_leaf!(Ident), | 418 | T![true] | T![false] => make_leaf!(Ident), |
417 | IDENT => make_leaf!(Ident), | 419 | IDENT => make_leaf!(Ident), |
420 | UNDERSCORE => make_leaf!(Ident), | ||
418 | k if k.is_keyword() => make_leaf!(Ident), | 421 | k if k.is_keyword() => make_leaf!(Ident), |
419 | k if k.is_literal() => make_leaf!(Literal), | 422 | k if k.is_literal() => make_leaf!(Literal), |
420 | LIFETIME_IDENT => { | 423 | LIFETIME_IDENT => { |