fix: join lines doesn't add space before closing quote

This commit is contained in:
Aleksey Kladov 2021-05-09 17:17:28 +03:00
parent b43921cddd
commit e0da3da0d9

@ -65,11 +65,15 @@ fn remove_newlines(edit: &mut TextEditBuilder, token: &SyntaxToken, range: TextR
fn remove_newline(edit: &mut TextEditBuilder, token: &SyntaxToken, offset: TextSize) {
if token.kind() != WHITESPACE || token.text().bytes().filter(|&b| b == b'\n').count() != 1 {
let mut string_open_quote = false;
let mut no_space = false;
if let Some(string) = ast::String::cast(token.clone()) {
if let Some(range) = string.open_quote_text_range() {
cov_mark::hit!(join_string_literal);
string_open_quote = range.end() == offset;
cov_mark::hit!(join_string_literal_open_quote);
no_space |= range.end() == offset;
}
if let Some(range) = string.close_quote_text_range() {
cov_mark::hit!(join_string_literal_close_quote);
no_space |= range.start() == offset + TextSize::of('\n');
}
}
@ -82,7 +86,7 @@ fn remove_newline(edit: &mut TextEditBuilder, token: &SyntaxToken, offset: TextS
};
let range = TextRange::at(offset, ((n_spaces_after_line_break + 1) as u32).into());
let replace_with = if string_open_quote { "" } else { " " };
let replace_with = if no_space { "" } else { " " };
edit.replace(range, replace_with.to_string());
return;
}
@ -797,22 +801,41 @@ fn foo() {
#[test]
fn join_string_literal() {
cov_mark::check!(join_string_literal);
check_join_lines(
r#"
{
cov_mark::check!(join_string_literal_open_quote);
check_join_lines(
r#"
fn main() {
$0"
hello
";
}
"#,
r#"
r#"
fn main() {
$0"hello
";
}
"#,
);
);
}
{
cov_mark::check!(join_string_literal_close_quote);
check_join_lines(
r#"
fn main() {
$0"hello
";
}
"#,
r#"
fn main() {
$0"hello";
}
"#,
);
}
check_join_lines(
r#"