No description
Find a file
bors[bot] c3defe2532
Merge #5518
5518: Use resolved paths in SSR rules r=matklad a=davidlattimore

The main user-visible changes are:
* SSR now matches paths based on whether they resolve to the same thing instead of whether they're written the same.
  * So `foo()` won't match `foo()` if it's a different function `foo()`, but will match `bar::foo()` if it's the same `foo`.
* Paths in the replacement will now be rendered with appropriate qualification for their context.
  * For example `foo::Bar` will render as just `Bar` inside the module `foo`, but might render as `baz::foo::Bar` from elsewhere.
* This means that all paths in the search pattern and replacement template must be able to be resolved.
* It now also matters where you invoke SSR from, since paths are resolved relative to wherever that is.
* Search now uses find-uses on paths to locate places to try matching. This means that when a path is present in the pattern, search will generally be pretty fast.
* Function calls can now match method calls again, but this time only if they resolve to the same function.

Co-authored-by: David Lattimore <dml@google.com>
2020-07-24 12:46:55 +00:00
.cargo Alternative quite tests alias 2019-11-20 22:22:32 +03:00
.github Disable audit step 2020-07-16 10:15:13 +02:00
.vscode vscode client side tests 2020-05-20 22:31:39 +03:00
crates Merge #5518 2020-07-24 12:46:55 +00:00
docs SSR: Pass current file position through to SSR code. 2020-07-24 21:34:00 +10:00
editors/code SSR: Fix a typescript lint warning 2020-07-24 22:23:14 +10:00
xtask Replace superslice with API on path to stabilization 2020-07-23 12:59:18 +02:00
.gitattributes Update .gitattributes 2020-07-20 12:45:05 +02:00
.gitignore Remove html from gitignore so highlight snapshots are not ignored 2020-06-27 12:02:49 -04:00
bors.toml Fix bors config? 2020-05-24 16:07:46 +02:00
Cargo.lock SSR: Use expect! in tests 2020-07-24 21:34:00 +10:00
Cargo.toml Gzip artifacts 2020-07-07 23:30:11 +03:00
LICENSE-APACHE Licenses 2018-01-10 22:47:04 +03:00
LICENSE-MIT Licenses 2018-01-10 22:47:04 +03:00
README.md Add Embark Studios to the sponsors list 2020-06-15 15:06:03 +02:00
rustfmt.toml Remove forcing \n via rustfmt 2019-11-02 22:19:59 +03:00

rust-analyzer logo

rust-analyzer is an experimental 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. If you want to get involved, check the rls-2.0 working group:

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0

Work on rust-analyzer is sponsored by

Ferrous Systems

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.

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 rls-2.0 working group on Zulip:

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frls-2.2E0

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.