No description
Find a file
bors ffb67710f7 Auto merge of #128786 - estebank:multiple-crate-versions, r=fee1-dead
Detect multiple crate versions on method not found

When a type comes indirectly from one crate version but the imported trait comes from a separate crate version, the called method won't be found. We now show additional context:

```
error[E0599]: no method named `foo` found for struct `dep_2_reexport::Type` in the current scope
 --> multiple-dep-versions.rs:8:10
  |
8 |     Type.foo();
  |          ^^^ method not found in `Type`
  |
note: there are multiple different versions of crate `dependency` in the dependency graph
 --> multiple-dep-versions.rs:4:32
  |
4 | use dependency::{do_something, Trait};
  |                                ^^^^^ `dependency` imported here doesn't correspond to the right crate version
  |
 ::: ~/rust/build/x86_64-unknown-linux-gnu/test/run-make/crate-loading/rmake_out/multiple-dep-versions-1.rs:4:1
  |
4 | pub trait Trait {
  | --------------- this is the trait that was imported
  |
 ::: ~/rust/build/x86_64-unknown-linux-gnu/test/run-make/crate-loading/rmake_out/multiple-dep-versions-2.rs:4:1
  |
4 | pub trait Trait {
  | --------------- this is the trait that is needed
5 |     fn foo(&self);
  |        --- the method is available for `dep_2_reexport::Type` here
```

Fix #128569, fix #110926, fix #109161, fix #81659, fix #51458, fix #32611. Follow up to #124944.
2024-08-17 14:40:04 +00:00
.cargo fix: Fix generated markers not being patchable in package.json 2024-06-08 12:54:43 +02:00
.github Only keep lib/ in publish-libs 2024-08-12 13:45:38 +03:00
.vscode feat: use vscode log format for client logs 2024-07-27 21:43:35 -07:00
assets Automatically change text color in logo based on dark mode 2022-03-06 23:06:53 +11:00
bench_data Spelling 2023-04-19 09:45:55 -04:00
crates Rollup merge of #129086 - slanterns:is_none_or, r=dtolnay 2024-08-16 19:58:58 +02:00
docs internal: Reply to requests with defaults when vfs is still loading 2024-08-12 12:05:15 +02:00
editors/code Allow rust-project.json to be hidden 2024-08-07 03:27:03 +02:00
lib Use crossbeam-channel from the workspace 2024-08-09 23:48:03 +02:00
xtask Allow new license combination 2024-08-12 12:51:47 +02:00
.editorconfig add max_line_length to .editorconfig 2024-01-20 17:14:00 +03:00
.git-blame-ignore-revs Show workspace info in the status bar 2024-04-26 11:28:33 +02:00
.gitattributes Fix .gitattributes for test_data 2022-07-24 14:05:35 +02:00
.gitignore internal: add "Shuffle Crate Graph" command 2021-12-07 16:37:19 +01:00
.typos.toml Implement rough symbol interning infra 2024-07-12 16:01:47 +02:00
Cargo.lock Bump rustc_pattern_analysis 2024-08-13 23:15:37 +09:00
Cargo.toml Bump rustc_pattern_analysis 2024-08-13 23:15:37 +09:00
clippy.toml Lint debug prints and disallowed types with clippy 2024-02-01 17:57:27 +01:00
CONTRIBUTING.md Add CONTRIBUTING.md 2024-04-18 10:24:40 +02:00
LICENSE-APACHE Licenses 2018-01-10 22:47:04 +03:00
LICENSE-MIT Licenses 2018-01-10 22:47:04 +03:00
PRIVACY.md Update privacy note 2021-12-23 14:04:15 +02:00
README.md Add CONTRIBUTING.md 2024-04-18 10:24:40 +02:00
rust-bors.toml Prepare for rust-bors 2023-10-05 15:26:09 +03:00
rust-version Preparing for merge from rust-lang/rust 2024-08-13 17:56:37 +03:00
rustfmt.toml Shuffle hir-expand things around 2024-01-26 19:28:39 +01:00
triagebot.toml Update triagebot.toml 2024-06-27 10:32:13 +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 check out the CONTRIBUTING.md or if you 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.