aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge #7617bors[bot]2021-02-109-68/+603
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7617: Add getter/setter assists r=Veykril a=yoshuawuyts This patch makes progress towards the design outlined in https://github.com/rust-analyzer/rust-analyzer/issues/5943, and includes a small refactor which closes https://github.com/rust-analyzer/rust-analyzer/issues/7607. All together this patch does 4 things: - Adds a `generate_getter` assist. - Adds a `generate_getter_mut` assist. - Adds a `generate_setter` assist. - Moves the `generate_impl_text` function from `generate_new` into `utils` (which closes #7607). ## Design Notes I've chosen to follow the [Rust API guidelines on getters](https://rust-lang.github.io/api-guidelines/naming.html#getter-names-follow-rust-convention-c-getter) as closely as possible. This deliberately leaves "builder pattern"-style setters out of scope. Also, similar to https://github.com/rust-analyzer/rust-analyzer/pull/7570 this assist generates doc comments. I think this should work well in most cases, and for the few where it doesn't it's probably easily edited. This makes it slightly less correct than the #7570 implementation, but I think this is still useful enough to include for many of the same reasons. The reason why this PR contains 3 assists, rather than 1, is because each of them is so similar to the others that it felt more noisy to do them separately than all at once. The amount of code added does not necessarily reflect that, but hope that still makes sense. ## Examples **Input** ```rust struct Person { name: String, // <- cursor on "name" } ``` **generate getter** ```rust struct Person { name: String, } impl Person { /// Get a reference to the person's name. fn name(&self) -> &String { &self.name } } ``` **generate mut getter** ```rust struct Person { name: String, } impl Person { /// Get a mutable reference to the person's name. fn name_mut(&mut self) -> &mut String { &mut self.name } } ``` **generate setter** ```rust struct Person { name: String, } impl Person { /// Set the person's name. fn set_name(&mut self, name: String) { self.name = name; } } ``` Co-authored-by: Yoshua Wuyts <[email protected]>
| * | Add getter/setter assistsYoshua Wuyts2021-02-099-68/+603
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Finish implementing `generate_setter` assists Make `generate_impl_text` util generic generate getter methods Fix getter / setter naming It's now in-line with the Rust API naming guidelines: https://rust-lang.github.io/api-guidelines/naming.html#getter-names-follow-rust-convention-c-getter apply clippy Improve examples
| | |
| \ \
*-. \ \ Merge #7591 #7622bors[bot]2021-02-1010-32/+67
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7591: Fix/no floating promises r=matklad a=sahandevs closes #3515 - added `@typescript-eslint/no-floating-promises: error` rule - changed `"no-console": ["error"]` to `"no-console": ["error", { allow: ["warn", "error"] }]` (we at least log the error messages of the floating promises) - fixed lint/compile errors 7622: Resolve TupleStructPat in SourceAnalyzer::resolve_path r=Veykril a=Veykril Closes #7594 bors r+ Co-authored-by: Sahandevs <[email protected]> Co-authored-by: Lukas Wirth <[email protected]>
| | * | | Resolve TupleStructPat in SourceAnalyzer::resolve_pathLukas Wirth2021-02-102-6/+34
| | | |/ | | |/|
| * | | use await insteadSahandevs2021-02-094-31/+21
| | | |
| * | | fix errorsSahandevs2021-02-074-6/+11
| | | |
| * | | formatSahandevs2021-02-074-12/+12
| | | |
| * | | handle Thenable type rejectsSahandevs2021-02-074-12/+23
| | | |
| * | | handle promise catchesSahandevs2021-02-074-4/+4
| | | |
| * | | add no-floating-promises ruleSahandevs2021-02-071-1/+2
| | | |
| * | | remove unnecessarySahandevs2021-02-074-6/+6
| | | |
* | | | Merge #7621bors[bot]2021-02-101-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7621: Use track caller in test documentation r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Use track caller in test documentationAleksey Kladov2021-02-101-1/+1
| | |/ / | |/| |
* | | | Merge #7619bors[bot]2021-02-101-0/+4
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7619: Add #[track_caller] to assist tests r=matklad a=yoshuawuyts This points the source of a failed assertion to the code which called it, rather than the location within the assertion helper method. While working on https://github.com/rust-analyzer/rust-analyzer/pull/7617 I had trouble locating some failing tests, and it was only by adding these attributes during development that I was able to locate them. This is only applied to test helpers, which means it comes at no runtime cost. And even then: I didn't experience any noticeable performance with this enabled or disabled. Mostly just a more pleasant experience debugging test failures (: Co-authored-by: Yoshua Wuyts <[email protected]>
| * | | Add #[track_caller] to assist testsYoshua Wuyts2021-02-091-0/+4
|/ / /
* | | Merge #7618bors[bot]2021-02-094-45/+95
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7618: Show qualified variant pattern completions r=Veykril a=Veykril ![UTMZyplssw](https://user-images.githubusercontent.com/3757771/107425157-e9c31800-6b1e-11eb-8963-96653115f8e0.gif) bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | Show qualified variant pattern completionsLukas Wirth2021-02-094-45/+95
|/ / /
* | | Merge #7616bors[bot]2021-02-093-6/+74
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7616: Show `Self` pattern and Self-prefixed enum-variant completions r=Veykril a=Veykril ![jDfQXNE0qZ](https://user-images.githubusercontent.com/3757771/107413514-1ff99b00-6b11-11eb-88b3-126cd106b514.gif) ![JpogVIgloq](https://user-images.githubusercontent.com/3757771/107413519-212ac800-6b11-11eb-8282-51115468dccc.gif) Variant pattern completions are to be done still. Closes #6549, at least that should address all that's left from that issue from what I can see. Co-authored-by: Lukas Wirth <[email protected]>
| * | | Show Self pattern completions for Adts if inside implsLukas Wirth2021-02-093-6/+40
| | | |
| * | | Show completions for enum variant with self prefix if inside implLukas Wirth2021-02-091-1/+35
| | | |
* | | | Merge #7615bors[bot]2021-02-094-8/+8628
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7615: Add parsing benchmark r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Add parsing benchmarkAleksey Kladov2021-02-094-8/+8628
| | | | |
* | | | | Merge #7614bors[bot]2021-02-097-237/+333
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7614: Unleash inner item resolution to users r=jonas-schievink a=jonas-schievink ![Peek 2021-02-09 17-30](https://user-images.githubusercontent.com/1786438/107394800-8627f300-6afc-11eb-8662-ed07226bc58f.gif) Co-authored-by: Jonas Schievink <[email protected]>
| * | | | | Remove unneeded returnJonas Schievink2021-02-091-2/+2
| | | | | |
| * | | | | Remove `pub`Jonas Schievink2021-02-091-2/+2
| | | | | |
| * | | | | Use `block_def_map` in `Resolver`Jonas Schievink2021-02-091-118/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This required a few changes to not bail out immediately if a `ModuleScope` doesn't resolve a path. The `LocalItemsScope` hack is now removed.
| * | | | | Teach `find_path` about inner itemsJonas Schievink2021-02-091-10/+91
| | | | | |
| * | | | | Add another block def map testJonas Schievink2021-02-091-0/+27
| | | | | |
| * | | | | Make `with_ancestor_maps` publicJonas Schievink2021-02-091-1/+1
| | | | | |
| * | | | | Add `TestDB::module_at_position`Jonas Schievink2021-02-092-104/+99
| | | | | |
| * | | | | Add expression scopes for blocksJonas Schievink2021-02-091-4/+18
| | |/ / / | |/| | |
* | | | | Merge #7613bors[bot]2021-02-098-4001/+102
|\ \ \ \ \ | |/ / / / |/| / / / | |/ / / | | | | | | | | | | | | | | | | 7613: Benchmarking infrastructure r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Infra for "unit" benchmarkingAleksey Kladov2021-02-098-4001/+102
| | | |
* | | | Merge #7611bors[bot]2021-02-094-49/+63
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7611: Cleanups r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | restore accidentally deleted testAleksey Kladov2021-02-091-0/+13
| | | |
| * | | More precise navigation to parentAleksey Kladov2021-02-093-10/+13
| | | |
| * | | Cleanup testsAleksey Kladov2021-02-093-55/+53
| | | |
* | | | Merge #7597bors[bot]2021-02-091-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7597: Set remote branch on xtask promote r=matklad a=lnicola to hopefully fix this: ``` $ git switch master Already on 'master' Your branch is up to date with 'upstream/master'. $ git fetch upstream $ git reset --hard upstream/master HEAD is now at 921ec4b3fca Auto merge of #81313 - LeSeulArtichaut:revert-32558, r=jyn514 $ git submodule update --recursive Submodule path 'src/tools/rust-analyzer': checked out '1a59f75cdaa730c16a694a4294eccf6dfe6fe0ad' $ git switch -c rust-analyzer-2021-02-08 Switched to a new branch 'rust-analyzer-2021-02-08' $ git fetch origin $ git reset --hard origin/release HEAD is now at 336909b63 Merge #7587 $ git add src/tools/rust-analyzer $ git commit "-m:arrow_up: rust-analyzer" [rust-analyzer-2021-02-08 1774ec1a683] :arrow_up: rust-analyzer 1 file changed, 1 insertion(+), 1 deletion(-) $ git push fatal: The current branch rust-analyzer-2021-02-08 has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin rust-analyzer-2021-02-08 Error: command `git push` failed, exit code: 128 ``` Co-authored-by: Laurențiu Nicola <[email protected]>
| * | | | Track remote branch on xtask promoteLaurențiu Nicola2021-02-091-1/+1
| | |/ / | |/| |
* | | | Merge #7610bors[bot]2021-02-093-217/+234
|\ \ \ \ | | |/ / | |/| / | |_|/ |/| | | | | | | | | | | | | | 7610: Cleanup test r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Cleanup testAleksey Kladov2021-02-091-20/+21
| | |
| * | Fix highlighting of injected attributesAleksey Kladov2021-02-091-0/+44
| | |
| * | Modernize testsAleksey Kladov2021-02-091-197/+169
|/ /
* | Merge #7602bors[bot]2021-02-082-11/+38
|\ \ | | | | | | | | | | | | | | | | | | | | | 7602: Check for dyn impls in method resolution r=flodiebold a=Veykril Fixes #6777 Co-authored-by: Lukas Wirth <[email protected]>
| * | Check for dyn impls in method resolutionLukas Wirth2021-02-082-11/+38
| | |
* | | Merge #7600bors[bot]2021-02-084-22/+23
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7600: Update crates r=flodiebold a=kjeremy Pulls in https://github.com/rust-lang/chalk/pull/682 Co-authored-by: kjeremy <[email protected]>
| * | | Update crateskjeremy2021-02-084-22/+23
| | | | | | | | | | | | | | | | Pulls in https://github.com/rust-lang/chalk/pull/682
* | | | Merge #7599bors[bot]2021-02-081-0/+2
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | 7599: Add emacs guide r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Add emacs guideAleksey Kladov2021-02-081-0/+2
|/ / /
* | | Merge #7595bors[bot]2021-02-085-20/+70
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7595: Add `config: &CargoConfig` parameter to `fn load_cargo(…)` r=matklad a=regexident For projects using rust-analyzer as a library it is desirable to be able to provide a custom-config to `fn load_cargo(…)` to pass features, etc, rather than having to copy & paste `fn load_cargo(…)` into one's project and maintain a fork of it and keep it in sync with upstream. Co-authored-by: Vincent Esche <[email protected]>