Go to file
bors fdb8aa2ea6 Auto merge of #15235 - omertuc:matchsemi, r=lowr
Stop inserting semicolon when extracting match arm

# Overview

Extracting a match arm value that has type unit into a function, when a
comma already follows the match arm value, results in an invalid (syntax
error) semicolon added between the newly generated function's generated
call and the comma.

# Example

Running this extraction

```rust
fn main() {
    match () {
        _ => $0()$0,
    };
}
```

would lead to

```rust
fn main() {
    match () {
        _ => fun_name();,
    };
}

fn fun_name() {
}
```

# Issue / Fix details

This happens because when there is no comma, rust-analyzer would simply
add the comma and wouldn't even try to evaluate whether it needs to add
a semicolon. But when the comma is there, it proceeds to evaluate
whether it needs to add a semicolon and it looks like the evaluation
logic erroneously ignores the possibility that we're in a match arm.
IIUC it never makes sense to add a semicolon when we're extracting from
a match arm value, so I've adjusted the logic to always decide against
adding a semicolon when we're in a match arm
2023-07-08 15:01:38 +00:00
.cargo Add CARGO_WORKSPACE_DIR env var in .cargo/config.toml 2022-07-19 13:02:16 +02:00
.github fix(metrics): Push to master branch 2023-06-28 23:11:35 +05:30
.vscode Spelling 2023-04-19 09:45:55 -04:00
assets
bench_data Spelling 2023-04-19 09:45:55 -04:00
crates Stop inserting semicolon when extracting match arm 2023-07-08 15:41:24 +02:00
docs Update docs/user/manual.adoc 2023-07-08 16:15:08 +02:00
editors/code Auto merge of #15227 - DropDemBits:indent-on-blank-line, r=lnicola 2023-07-07 09:06:56 +00:00
lib Speedup line index calculation via SSE2 2023-07-03 16:46:28 +02:00
xtask Auto merge of #15030 - NanthR:parallel-metrics, r=HKalbasi 2023-06-28 15:02:51 +00:00
.editorconfig
.git-blame-ignore-revs add prettier format commit to ignored revisions 2022-05-17 18:15:51 +01:00
.gitattributes Fix .gitattributes for test_data 2022-07-24 14:05:35 +02:00
.gitignore
Cargo.lock Auto merge of #14990 - HKalbasi:diagnostic-map, r=HKalbasi 2023-07-03 18:58:47 +00:00
Cargo.toml Split out project loading capabilities from rust-analyzer crate 2023-07-03 17:40:31 +02:00
LICENSE-APACHE
LICENSE-MIT
PRIVACY.md
README.md ⬆️ rust-analyzer 2022-08-09 07:23:57 +03:00
rustfmt.toml
triagebot.toml ⬆️ rust-analyzer 2022-11-09 21:49:10 +02:00

rust-analyzer logo

rust-analyzer is a modular compiler frontend for the Rust language. It is a part of a larger rls-2.0 effort to create excellent IDE support for Rust.

Quick Start

https://rust-analyzer.github.io/manual.html#installation

Documentation

If you want to contribute to rust-analyzer or are just curious about how things work under the hood, check the ./docs/dev folder.

If you want to use rust-analyzer's language server with your editor of choice, check the manual folder. It also contains some tips & tricks to help you be more productive when using rust-analyzer.

Security and Privacy

See the corresponding sections of the manual.

Communication

For usage and troubleshooting requests, please use "IDEs and Editors" category of the Rust forum:

https://users.rust-lang.org/c/ide/14

For questions about development and implementation, join rust-analyzer working group on Zulip:

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer

License

rust-analyzer is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.