![]() 10872: ide_db: build symbol index from crate def map r=Veykril a=jhgg fixes #4842, #10764 Is this looking correct? 👀 - [x] build the symbol index based upon the CrateDefMap for the given crate in `crate_symbols` - [x] make it multi threaded again, and figure out how to cache each moduleid's symbol index in salsa. - [x] NavigationTarget for names in macros is wrong, need to figure out how to compute a text range in the original file id? - [x] cleanup some duped code - [x] collect macros from `ItemScope.declared_macros()` into symbol index. - [x] store declared macros in `ItemScope` so we can figure out where macros were defined for the index. - [x] do something about `SymbolIndex::for_files` - ideally it should use the new module symbol index stuff. - [x] delete `source_file_to_file_symbols` & co... - [x] figure out what to do about `library_symbols` - [x] maybe... speed up the new `library_symbols` - the new impl is probably much slower, and definitely much less parallel. **deciding to do nothing here, we can optimize later if necerssary.** - [x] fix failing test: `navigation_target::tests::test_nav_for_symbol` - notably the crate def map doesn't seem to find declarations inside function. - [x] now a bunch of other tests are failing around auto_import & qualify_path handlers. :( - [x] need to assoc items in traits and impls Co-authored-by: Jake Heinz <jh@discordapp.com> |
||
---|---|---|
.cargo | ||
.github | ||
.vscode | ||
assets | ||
bench_data | ||
crates | ||
docs | ||
editors/code | ||
lib | ||
xtask | ||
.gitattributes | ||
.gitignore | ||
bors.toml | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
PRIVACY.md | ||
README.md | ||
rustfmt.toml |
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.
Work on rust-analyzer is sponsored by
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
Quick Links
- Website: https://rust-analyzer.github.io/
- Metrics: https://rust-analyzer.github.io/metrics/
- API docs: https://rust-analyzer.github.io/rust-analyzer/ide/
- Changelog: https://rust-analyzer.github.io/thisweek
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.