aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* minor style fixes per feedback on #8036Josh Mcguigan2021-03-161-27/+21
|
* Merge #7498bors[bot]2021-03-1640-171/+373
|\ | | | | | | | | | | | | | | | | | | 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-1640-171/+373
| | | | | | | | 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-163-50/+172
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * | | | completions: centralize calculation of relevance and ref matchesJosh Mcguigan2021-03-163-50/+172
| | | | |
* | | | | 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
| |/ / / /
* / / / / Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-168-62/+100
|/ / / /
* | | | 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-154-35/+75
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8028: Return multiple modules in `parent_module` feature r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | | | Return multiple modules in `parent_module`Lukas Wirth2021-03-154-35/+75
| | | | |
* | | | | 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
| |/ / / /
* / / / / Enable proc-macros by defaultAleksey Kladov2021-03-151-1/+1
|/ / / /
* | | | Merge #8029bors[bot]2021-03-1510-12/+10
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | 8029: Enable thread-local coverage marks r=JoshMcguigan a=lnicola Co-authored-by: LaurenČ›iu Nicola <[email protected]>
| * | | Drop non-working markLaurențiu Nicola2021-03-151-2/+0
| | | |
| * | | Enable thread-local coverage marksLaurențiu Nicola2021-03-159-10/+10
| | | |
* | | | Merge #8020bors[bot]2021-03-154-64/+136
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8020: Power up goto_implementation r=matklad a=Veykril by allowing it to be invoked on references of names, now showing all (trait) implementations of the given type in all crates instead of just the defining crate as well as including support for builtin types ![image](https://user-images.githubusercontent.com/3757771/111144403-52bb0700-8587-11eb-9205-7a2a5b8b75a3.png) Example screenshot of `impl`s of Box in `log`, `alloc`, `std` and the current crate. Before you had to invoke it on the definition where it would only show the `impls` in `alloc`. Co-authored-by: Lukas Wirth <[email protected]>
| * | | goto_implementation: Look at the entire crate graph for trait implsLukas Wirth2021-03-151-8/+3
| | | |
| * | | Speedup trait impl search for goto_implementationLukas Wirth2021-03-152-3/+19
| | | |
| * | | Power up goto_implementationLukas Wirth2021-03-153-62/+123
| | | | | | | | | | | | | | | | | | | | by allowing it to be invoked on references of names, showing all (trait) implementations of the given type in all crates including builtin types
* | | | Merge #8027bors[bot]2021-03-151-12/+4
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8027: Completion context remove exact match method in favor of fields r=JoshMcguigan a=JoshMcguigan This is a minor cleanup PR following #8008. It removes the `expected_name_and_type` method on completion context in favor of using the fields. I thought this method was used in more places, or else it may have just made sense to make this change directly in #8008 :shrug: Co-authored-by: Josh Mcguigan <[email protected]>
| * | | | remove expected_name_and_type method on completion context in favor of using ↵Josh Mcguigan2021-03-151-12/+4
| | | | | | | | | | | | | | | | | | | | fields added in #8008
* | | | | Merge #8015bors[bot]2021-03-153-67/+108
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8015: Introduce Semantics::visit_file_defs r=matklad a=Veykril See https://github.com/rust-analyzer/rust-analyzer/issues/3538#issuecomment-798920601 Co-authored-by: Lukas Wirth <[email protected]>