Go to file
Pascal Kuthe 2e465d18f2
generate correct completion edits for missing macro arguments
rust-analyzer used the token at the cursor after macro expansion
to decide whether to replace the token at the cursor before macro
expansion. In most cases these two are the same but in some cases these
can mismatch which can lead to incorrect replacements.

For example if an ident/expr macro argument is missing rust-analyzer
generates a "missing" identifier as a placeholder, there is only a
brace at the cursor. Therefore, rust-analyzer will incorrectly replace
the macro brace with the completion in that case leading to #14246.

Using the expanded token type was intentional. However, this doesn't
seem to ever be desirable (this is supported by the fact that there
were no tests that relied on this behavior) since the type of edit to
perform should always be determined by the token it's actually applied
to.
2023-03-04 02:05:09 +01:00
.cargo Add CARGO_WORKSPACE_DIR env var in .cargo/config.toml 2022-07-19 13:02:16 +02:00
.github ⬆️ rust-analyzer 2023-02-13 13:55:14 +02:00
.vscode ⬆️ rust-analyzer 2022-08-16 11:24:50 +03:00
assets
bench_data avoid a &str to String conversion 2022-08-17 04:58:26 +09:00
crates generate correct completion edits for missing macro arguments 2023-03-04 02:05:09 +01:00
docs Auto merge of #14040 - HKalbasi:mir, r=HKalbasi 2023-02-28 09:12:19 +00:00
editors/code Auto merge of #14040 - HKalbasi:mir, r=HKalbasi 2023-02-28 09:12:19 +00:00
lib Bump lsp-types 2023-02-14 14:59:50 +01:00
xtask ⬆️ rust-analyzer 2023-02-13 13:55:14 +02: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 minor: import Either from either 2023-02-25 21:55:11 +09:00
Cargo.toml internal: Enable smallvec's union feature 2023-02-14 17:01:01 +01: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.