Merge branch 'rust-lang:master' into master

This commit is contained in:
Adenine 2023-07-08 12:21:38 -04:00 committed by GitHub
commit 514bab504e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 6 deletions

View File

@ -1360,14 +1360,15 @@ fn make_call(ctx: &AssistContext<'_>, fun: &Function, indent: IndentLevel) -> St
} }
format_to!(buf, "{expr}"); format_to!(buf, "{expr}");
let insert_comma = fun let parent_match_arm = fun.body.parent().and_then(ast::MatchArm::cast);
.body let insert_comma = parent_match_arm.as_ref().is_some_and(|it| it.comma_token().is_none());
.parent()
.and_then(ast::MatchArm::cast)
.map_or(false, |it| it.comma_token().is_none());
if insert_comma { if insert_comma {
buf.push(','); buf.push(',');
} else if fun.ret_ty.is_unit() && (!fun.outliving_locals.is_empty() || !expr.is_block_like()) { } else if parent_match_arm.is_none()
&& fun.ret_ty.is_unit()
&& (!fun.outliving_locals.is_empty() || !expr.is_block_like())
{
buf.push(';'); buf.push(';');
} }
buf buf
@ -4611,6 +4612,29 @@ fn $0fun_name() -> i32 {
} }
"#, "#,
); );
// Makes sure no semicolon is added for unit-valued match arms
check_assist(
extract_function,
r#"
fn main() {
match () {
_ => $0()$0,
}
}
"#,
r#"
fn main() {
match () {
_ => fun_name(),
}
}
fn $0fun_name() {
()
}
"#,
)
} }
#[test] #[test]

View File

@ -141,6 +141,9 @@ If you're not using Code, you can compile and install only the LSP server:
$ cargo xtask install --server $ cargo xtask install --server
---- ----
Make sure that `.cargo/bin` is in `$PATH` and precedes paths where `rust-analyzer` may also be installed.
Specifically, `rustup` includes a proxy called `rust-analyzer`, which can cause problems if you're planning to use a source build or even a downloaded binary.
=== rust-analyzer Language Server Binary === rust-analyzer Language Server Binary
Other editors generally require the `rust-analyzer` binary to be in `$PATH`. Other editors generally require the `rust-analyzer` binary to be in `$PATH`.