aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8052bors[bot]2021-03-161-27/+21
|\ | | | | | | | | | | | | | | | | | | 8052: minor style fixes per feedback on #8036 r=JoshMcguigan a=JoshMcguigan cc @matklad - this PR addresses your comments in #8036. changelog fixup #8036 Co-authored-by: Josh Mcguigan <[email protected]>
| * minor style fixes per feedback on #8036Josh Mcguigan2021-03-161-27/+21
| |
* | Merge #8051bors[bot]2021-03-161-3/+3
|\ \ | |/ |/| | | | | | | | | | | | | | | 8051: Fix more unused wariable warnings r=lnicola a=lnicola bors r+ changelog skip Co-authored-by: Laurențiu Nicola <[email protected]>
| * Fix more unused wariable warningsLaurențiu Nicola2021-03-161-3/+3
| |
* | Merge #7498bors[bot]2021-03-1641-175/+375
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 7498: Clone for update r=matklad a=matklad rowan counterpart https://github.com/rust-analyzer/rowan/pull/93 #6857 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Upgrade rowanAleksey Kladov2021-03-1641-175/+375
| | | | | | | | | | | | Notably, new rowan comes with support for mutable syntax trees.
| | |
| \ \
*-. \ \ Merge #7900 #8000bors[bot]2021-03-1621-212/+1058
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7900: show function params in completion detail r=matklad a=JoshMcguigan This resolves #7842 by updating the detail for function completions from `-> T` to `fn(T, U) -> V`. I added an expicit unit test for this, `ide_completion::render::fn_detail_includes_args_and_return_type`, which passes. Lots of other unit tests fail (~60 of them) due to this change, although I believe the failures are purely cosmetic (they were testing the exact format of this output). I'm happy to go update those tests, but before I do that I'd like to make sure this is in fact the format we want for the detail? edit - I realized `UPDATE_EXPECT=1 cargo test` automatically updates `expect!` tests. Big :+1: to whoever worked on that! So I'll go ahead and update all these tests soon. But I still would like to confirm `fn(T, U) -> V` is the desired content in the `detail` field. 8000: Use hir formatter for hover text r=matklad a=oxalica Fix #2765 , (should) fix #4665 Co-authored-by: Josh Mcguigan <[email protected]> Co-authored-by: oxalica <[email protected]>
| | * | Update testsoxalica2021-03-151-28/+57
| | | |
| | * | Pretty print root module of extern cratesoxalica2021-03-151-0/+4
| | | |
| | * | Clean usage of ShortLabeloxalica2021-03-152-7/+8
| | | |
| | * | Fix trait type parameteroxalica2021-03-151-1/+7
| | | |
| | * | Use hir formatter moreoxalica2021-03-158-53/+258
| | | |
| | * | Impl HirDisplay for function hover messageoxalica2021-03-155-14/+461
| | | |
| | * | Introduce FunctionQualifier for hir::FunctionDataoxalica2021-03-156-17/+45
| | | |
| | * | Collect HirDisplay impls to a single fileoxalica2021-03-152-20/+27
| | | |
| | * | Add test for hover of macro expanded functionoxalica2021-03-151-0/+38
| | | |
| * | | add params_display and ty_displayJosh Mcguigan2021-03-121-9/+17
| | | |
| * | | show function params in completion detailJosh Mcguigan2021-03-128-82/+155
| | | |
| | | |
| \ \ \
*-. \ \ \ Merge #8036 #8046bors[bot]2021-03-164-50/+193
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8036: completions: provide relevance bonus for enum types, and suggest ref matches for fn and enum r=matklad a=JoshMcguigan This PR makes several improvements to completions and completion sorting: 1. Provide exact match type relevance score bonus for enum variants 2. Suggest `&Foo` (ref_match) for enums if that is an exact type match 3. Suggest `&foo()` (ref_match) if `foo` returns a type which would be an exact match either with the reference or due to a `Deref` impl ### Before ![pre-ref-relevance-centralized](https://user-images.githubusercontent.com/22216761/111189377-3f05a580-8573-11eb-89be-58a45cb7f829.png) ### After ![post-ref-relevance-centralized](https://user-images.githubusercontent.com/22216761/111189395-45941d00-8573-11eb-871b-09186b35cbb9.png) ### Caveats I think generic types will require some kind of fancier logic when testing for `exact_type_match`, so for now `Option`/`Result`/etc unfortunately still don't have great completions. ### Implementation I implemented this in a way that I think makes it most likely for each completion type to be handled consistently. Just replace `CompletionItem::new` with `CompletionItem::new_with_type_info` and `exact_type_match`/`exact_name_match`/`ref_match` are all handled for you, in a way which is sure to be consistent across completion types. This approach does introduce some coupling/plumbing that didn't exist before. Notice for example `set_is_local` on the builder, because `set_relevance` was removed from the builder to enforce that the relevance was built "properly" with `CompletionItem::new_with_type_info`. But I think there are benefits to this approach, like `CompletionRelevance` should probably consider deprecation status, and we already tell the builder about that, so in the (likely near term) future we can just pass that information along to `CompletionRelevance` when the user calls `set_deprecated` rather than the user having to manually set it in two places. This basically just hides `CompletionRelevance` from the individual completions, so they only worry about the `CompletionItem` interface. At the moment this seems like a cleaner approach to me, but I'm open to feedback here. edit - I've reimplemented this in a simpler way, per feedback below. 8046: Prefer match to if let else r=matklad a=matklad bors r+ 🤖 Co-authored-by: Josh Mcguigan <[email protected]> Co-authored-by: Aleksey Kladov <[email protected]>
| | * | | | Prefer match to if let elseAleksey Kladov2021-03-161-0/+21
| | | | | |
| * | | | | completions: centralize calculation of relevance and ref matchesJosh Mcguigan2021-03-163-50/+172
| | | | | |
* | | | | | Merge #8045bors[bot]2021-03-161-0/+17
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8045: Increase fetch-depth to make `git describe` work r=lnicola a=lnicola bors r+ Co-authored-by: Laurențiu Nicola <[email protected]>
| * | | | | | Increase fetch-depth to make `git describe` workLaurențiu Nicola2021-03-161-0/+17
| | |_|_|_|/ | |/| | | |
* | | | | | Merge #8040bors[bot]2021-03-162-9/+31
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8040: 7709: Added the check for return type of len function. r=Veykril a=chetankhilosiya Co-authored-by: Chetan Khilosiya <[email protected]>
| * | | | | 7709: Import changes.Chetan Khilosiya2021-03-151-4/+2
| | | | | |
| * | | | | 7709: Added the check for return type of len function.Chetan Khilosiya2021-03-152-9/+33
| |/ / / /
* | | | | Merge #8044bors[bot]2021-03-1610-65/+103
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8044: Fix macro expansion for statements w/o semicolon r=edwin0cheng a=edwin0cheng Fixes #7845 And up `ungrammer` to 1.12. cc @jonas-schievink bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * | | | Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-1610-65/+103
|/ / / /
* | | | Merge #8039bors[bot]2021-03-153-14/+29
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8039: Use SmallVec for Substs r=flodiebold a=flodiebold Doesn't help as much as I hoped, but it helps a bit and I also did some refactorings that were necessary anyway. Co-authored-by: Florian Diebold <[email protected]>
| * | | | Use SmallVec for SubstsFlorian Diebold2021-03-153-14/+29
|/ / / / | | | | | | | | | | | | | | | | Doesn't help as much as I hoped, but it helps a bit and I also did some refactorings that were necessary anyway.
* | | | Merge #7970bors[bot]2021-03-153-11/+69
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7970: Fix incorrect diagnostics for failing built in macros r=jonas-schievink a=brandondong **Reproduction:** 1. Use a built in macro in such a way that rust-analyzer fails to expand it. For example: **lib.rs** ``` include!("<valid file but without a .rs extension so it is not indexed by rust-analyzer>"); ``` 2. rust-analyzer highlights the macro call and says the macro itself cannot be resolved even though include! is in the standard library (unresolved-macro-call diagnostic). 3. No macro-error diagnostic is raised. **Root cause for incorrect unresolved-macro-call diagnostic:** 1. collector:collect_macro_call is able to resolve include! in legacy scope but the expansion fails. Therefore, it's pushed into unexpanded_macros to be retried with module scope. 2. include! fails at the resolution step in collector:resolve_macros now that it's using module scope. Therefore, it's retained in unexpanded_macros. 3. Finally, collector:finish tries resolving the remaining unexpanded macros but only with module scope. include! again fails at the resolution step so a diagnostic is created. **Root cause for missing macro-error diagnostic:** 1. In collector:resolve_macros, directive.legacy is None since eager expansion failed in collector:collect_macro_call. The macro_call_as_call_id fails to resolve since we're retrying in module scope. Therefore, collect_macro_expansion is not called for the macro and no macro-error diagnostic is generated. **Fix:** - In collector:collect_macro_call, do not add failing built-in macros to the unexpanded_macros list and immediately raise the macro-error diagnostic. This is in contrast to lazy macros which are resolved in collector::resolve_macros and later expanded in collect_macro_expansion where a macro-error diagnostic may be raised. Co-authored-by: Brandon <[email protected]> Co-authored-by: brandondong <[email protected]>
| * | | | Update crates/hir_def/src/nameres/collector.rsbrandondong2021-03-151-1/+1
| | | | | | | | | | | | | | | Co-authored-by: Jonas Schievink <[email protected]>
| * | | | Fix incorrect diagnositics for failing built in eager macrosBrandon2021-03-142-10/+68
| | | | |
| * | | | Fix spelling errorBrandon2021-03-141-1/+1
| | | | |
* | | | | Merge #8038bors[bot]2021-03-152-101/+117
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8038: Fix unification logic r=flodiebold a=flodiebold Co-authored-by: Florian Diebold <[email protected]>
| * | | | Fix unification logicFlorian Diebold2021-03-152-101/+117
| | | | |
* | | | | Merge #8028bors[bot]2021-03-156-44/+91
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8028: Return multiple modules in `parent_module` feature r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | | | Support multiple parents in parentModule in vscode-clientLukas Wirth2021-03-151-9/+15
| | | | |
| * | | | Return multiple modules in `parent_module`Lukas Wirth2021-03-155-35/+76
| | | | |
* | | | | Merge #8037bors[bot]2021-03-154-0/+288
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8037: Assist is empty 7709 r=Veykril a=chetankhilosiya Updated the implementation to get the function from implementation Co-authored-by: Chetan Khilosiya <[email protected]>
| * | | | | 7709: Updated the implementation.Chetan Khilosiya2021-03-153-37/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The get function from impl method is updated. and now same method used to get len and is_empty function.
| * | | | | 7709: Added the assist to generate is_empty functionChetan Khilosiya2021-03-153-0/+252
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | the assist will be shown when the len function is implemented. is_empty internally uses len function.
* | | | | Merge #8035bors[bot]2021-03-153-120/+120
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8035: unqualfied_path completions aren't responsible for variant pattern completions r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | | unqualfied_path completions aren't responsible for pattern completionsLukas Wirth2021-03-153-120/+120
| | | | |
* | | | | Merge #7992bors[bot]2021-03-152-1/+76
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7992: improved completion sorting for functions and methods r=JoshMcguigan a=JoshMcguigan This PR improves completion sorting for functions and methods. Related to #7935. ### Before The methods are being sorted by `coc` by closeness in file. ![pre-fn-relevance](https://user-images.githubusercontent.com/22216761/111018669-fe3d3f00-836e-11eb-9607-cc05af080a6a.png) ### After Notice `bbb()` on top (type + name match), followed by `ddd()` (type match). ![image](https://user-images.githubusercontent.com/22216761/111018680-0e551e80-836f-11eb-94b1-c88336ecbc6e.png) Co-authored-by: Josh Mcguigan <[email protected]>
| * | | | | implement function completion scoringJosh Mcguigan2021-03-152-1/+76
| |/ / / /
* | | | | Merge #8033bors[bot]2021-03-154-8/+17
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8033: Add test for proc-macro meta info retrieval r=edwin0cheng a=edwin0cheng bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * | | | | Add test for proc-macro meta info retrievalEdwin Cheng2021-03-154-8/+17
| |/ / / /
* | | | | Merge #8032bors[bot]2021-03-153-3/+3
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8032: Enable proc-macros by default r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | Enable proc-macros by defaultAleksey Kladov2021-03-153-3/+3
|/ / / /