fix: insert whitespace between text and pound

`text#`, `text"..."`, and `text'...'` are reserved syntax since Rust
2021. Note that the latter two are already handled correctly.
This commit is contained in:
Ryo Yoshida 2023-04-05 20:33:17 +09:00
parent a6464392c1
commit 0df9fb22d8
No known key found for this signature in database
GPG Key ID: E25698A930586171
2 changed files with 48 additions and 1 deletions

View File

@ -254,4 +254,49 @@ macro_rules! whitespace {
"#, "#,
) )
} }
#[test]
fn whitespace_between_text_and_pound() {
check_assist(
inline_macro,
r#"
macro_rules! foo {
() => {
cfg_if! {
if #[cfg(test)] {
1;
} else {
1;
}
}
}
}
fn main() {
$0foo!();
}
"#,
r#"
macro_rules! foo {
() => {
cfg_if! {
if #[cfg(test)] {
1;
} else {
1;
}
}
}
}
fn main() {
cfg_if!{
if #[cfg(test)]{
1;
}else {
1;
}
};
}
"#,
);
}
} }

View File

@ -60,7 +60,9 @@ pub fn insert_ws_into(syn: SyntaxNode) -> SyntaxNode {
|f: fn(SyntaxKind) -> bool, default| -> bool { last.map(f).unwrap_or(default) }; |f: fn(SyntaxKind) -> bool, default| -> bool { last.map(f).unwrap_or(default) };
match tok.kind() { match tok.kind() {
k if is_text(k) && is_next(|it| !it.is_punct() || it == UNDERSCORE, false) => { k if is_text(k)
&& is_next(|it| !it.is_punct() || matches!(it, T![_] | T![#]), false) =>
{
mods.push(do_ws(after, tok)); mods.push(do_ws(after, tok));
} }
L_CURLY if is_next(|it| it != R_CURLY, true) => { L_CURLY if is_next(|it| it != R_CURLY, true) => {