mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 21:13:37 +00:00
Fixed whitespace bug
This commit is contained in:
parent
028595548b
commit
6794d50a9b
2 changed files with 35 additions and 3 deletions
|
@ -388,11 +388,12 @@ impl<'a> TreeSink for TtTreeSink<'a> {
|
|||
return;
|
||||
}
|
||||
|
||||
let mut last = self.cursor;
|
||||
for _ in 0..n_tokens {
|
||||
if self.cursor.eof() {
|
||||
break;
|
||||
}
|
||||
|
||||
last = self.cursor;
|
||||
let text: SmolStr = match self.cursor.token_tree() {
|
||||
Some(tt::TokenTree::Leaf(leaf)) => {
|
||||
// Mark the range if needed
|
||||
|
@ -441,11 +442,11 @@ impl<'a> TreeSink for TtTreeSink<'a> {
|
|||
self.inner.token(kind, text);
|
||||
|
||||
// Add whitespace between adjoint puncts
|
||||
let next = self.cursor.bump();
|
||||
let next = last.bump();
|
||||
if let (
|
||||
Some(tt::TokenTree::Leaf(tt::Leaf::Punct(curr))),
|
||||
Some(tt::TokenTree::Leaf(tt::Leaf::Punct(_))),
|
||||
) = (self.cursor.token_tree(), next.token_tree())
|
||||
) = (last.token_tree(), next.token_tree())
|
||||
{
|
||||
if curr.spacing == tt::Spacing::Alone {
|
||||
self.inner.token(WHITESPACE, " ".into());
|
||||
|
|
|
@ -838,6 +838,37 @@ fn test_tt_composite() {
|
|||
.assert_expand_items(r#"foo! { => }"#, r#"0"#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_tt_composite2() {
|
||||
let node = parse_macro(
|
||||
r#"
|
||||
macro_rules! foo {
|
||||
($($tt:tt)*) => { abs!(=> $($tt)*) }
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.expand_items(r#"foo!{#}"#);
|
||||
|
||||
let res = format!("{:#?}", &node);
|
||||
assert_eq_text!(
|
||||
res.trim(),
|
||||
r###"MACRO_ITEMS@[0; 10)
|
||||
MACRO_CALL@[0; 10)
|
||||
PATH@[0; 3)
|
||||
PATH_SEGMENT@[0; 3)
|
||||
NAME_REF@[0; 3)
|
||||
IDENT@[0; 3) "abs"
|
||||
EXCL@[3; 4) "!"
|
||||
TOKEN_TREE@[4; 10)
|
||||
L_PAREN@[4; 5) "("
|
||||
EQ@[5; 6) "="
|
||||
R_ANGLE@[6; 7) ">"
|
||||
WHITESPACE@[7; 8) " "
|
||||
POUND@[8; 9) "#"
|
||||
R_PAREN@[9; 10) ")""###
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_lifetime() {
|
||||
parse_macro(
|
||||
|
|
Loading…
Reference in a new issue