aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | 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]>
| * | | | | move Semantics::visit_file_defs to ide_db::helpersLukas Wirth2021-03-154-27/+33
| | | | | |
| * | | | | Introduce Semantics::visit_file_defsLukas Wirth2021-03-153-68/+103
| | | | | |
* | | | | | Merge #8008bors[bot]2021-03-152-26/+286
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8008: Completion context expected type r=matklad a=JoshMcguigan Currently there are two ways completions use to determine the expected type. There is the `expected_type` field on the `CompletionContext`, as well as the `expected_name_and_type` method on the `RenderContext`. These two things returned slightly different results, and their results were only valid if you had pre-checked some (undocumented) invariants. A simple combination of the two approaches doesn't work because they are both too willing to go far up the syntax tree to find something that fits what they are looking for. This PR makes the following changes: 1. Updates the algorithm that sets `expected_type` on `CompletionContext` 2. Adds `expected_name` field to `CompletionContext` 3. Re-writes the `expected_name_and_type` method to simply return the underlying fields from `CompletionContext` (I'd like to save actually removing this method for a follow up PR just to keep the scope of the changes down) 4. Adds unit tests for the `expected_type`/`expected_name` fields All the existing unit tests still pass (unmodified), but this new algorithm certainly has some gaps (although I believe all the `FIXME` introduced in this PR are also flaws in the current code). I wanted to stop here and get some feedback though - is this approach fundamentally sound? Co-authored-by: Josh Mcguigan <[email protected]>
| * | | | | update algorithm for determining expected type of completionJosh Mcguigan2021-03-152-26/+286
| | | | | |
* | | | | | Merge #8018bors[bot]2021-03-1511-142/+155
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8018: Make Ty wrap TyKind in an Arc r=flodiebold a=flodiebold ... to further move towards Chalk. This is a bit of a slowdown (218ginstr vs 213ginstr for inference on RA), even though it allows us to unwrap the Substs in `TyKind::Ref` etc.. Co-authored-by: Florian Diebold <[email protected]>
| * | | | | | Don't use Substs for Ref/Raw/Array/SliceFlorian Diebold2021-03-1410-116/+103
| | | | | | |
| * | | | | | Make Ty wrap TyKind in an ArcFlorian Diebold2021-03-148-27/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... like it will be in Chalk. We still keep `interned_mut` and `into_inner` methods that will probably not exist with Chalk. This worsens performance slightly (5ginstr inference on RA), but doesn't include other simplifications we can do yet.
* | | | | | | Merge #8026bors[bot]2021-03-155-45/+33
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8026: Simplify source maps for fields r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | Simplify source maps for fieldsAleksey Kladov2021-03-155-45/+33
| | | | | | |
* | | | | | | Merge #8025bors[bot]2021-03-152-3/+33
|\| | | | | | | |_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8025: Goto definition works for `S { a: }` case r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | Goto definition works for `S { a: }` caseAleksey Kladov2021-03-152-3/+33
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | What happens here is that we lower `: ` to a missing expression, and then correctly record that the corresponding field expression resolves to a specific field. Where we fail is in the mapping of syntax to this missing expression. Doing it via `ast_field.expr()` fails, as that expression is `None`. Instead, we go in the opposite direcition and ask each lowered field about its source. This works, but has wrong complexity `O(N)` and, really, the implementation is just too complex. We need some better management of data here.
| | | | |
| \ \ \ \
*-. \ \ \ \ Merge #8021 #8022bors[bot]2021-03-1514-40/+59
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8021: Enable searching for builtin types r=matklad a=Veykril Not too sure how useful this is for reference search overall, but for completeness sake it should be there ![image](https://user-images.githubusercontent.com/3757771/111132711-f69db600-8579-11eb-8c90-22fd6862d11f.png) Also enables document highlighting for them. 8022: some clippy::performance fixes r=matklad a=matthiaskrgr use vec![] instead of Vec::new() + push() avoid redundant clones use chars instead of &str for single char patterns in ends_with() and starts_with() allocate some Vecs with capacity to avoid unnecessary resizing Co-authored-by: Lukas Wirth <[email protected]> Co-authored-by: Matthias Krüger <[email protected]>
| | * | | | | some clippy::performance fixesMatthias Krüger2021-03-159-19/+13
| | | |/ / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | use vec![] instead of Vec::new() + push() avoid redundant clones use chars instead of &str for single char patterns in ends_with() and starts_with() allocate some Vecs with capacity to avoid unneccessary resizing
| * | | | | Enable searching for builtin typesLukas Wirth2021-03-155-21/+46
| | | | | |
* | | | | | Merge #8023bors[bot]2021-03-155-13/+12
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8023: Move code to the appropriate layer r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | Move code to the appropriate layerAleksey Kladov2021-03-155-13/+12
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | StructureNodeKind is a type which is specific to a particular feature, file_structure. It shouldn't be in the "code shared by all ide features" part.
* | | | | | Merge #7975bors[bot]2021-03-155-50/+207
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7975: Provide regions in file structure r=ivan770 a=ivan770 Closes #7913 https://user-images.githubusercontent.com/14003886/110819163-96b3c080-8296-11eb-993e-a7cdb574a12d.mp4 Co-authored-by: ivan770 <[email protected]>
| * | | | | Make CI happyivan7702021-03-141-1/+1
| | | | | |
| * | | | | Introduce StructureNodeKindivan7702021-03-147-57/+110
| | | | | |
| * | | | | Added region intersection testivan7702021-03-141-0/+53
| | | | | |
| * | | | | Shorten trim callivan7702021-03-141-1/+1
| | | | | |
| * | | | | Provide regions in file structureivan7702021-03-145-4/+55
| | | | | |
* | | | | | Merge #7966bors[bot]2021-03-153-3/+317
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7966: Diagnose files that aren't in the module tree r=jonas-schievink a=jonas-schievink Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6377 I'm not sure if this is the best way to do this. It will cause false positives for all `include!`d files (though I'm not sure how much IDE functionality we have for these). Co-authored-by: Jonas Schievink <[email protected]>
| * | | | | | Add module commentJonas Schievink2021-03-151-0/+2
| | | | | | |
| * | | | | | Use pub(crate)Jonas Schievink2021-03-151-3/+3
| | | | | | |
| * | | | | | Redo it properly and add a quickfixJonas Schievink2021-03-153-7/+309
| | | | | | |
| * | | | | | Diagnose files that aren't in the module treeJonas Schievink2021-03-101-3/+13
| | | | | | |
* | | | | | | Merge #8017bors[bot]2021-03-141-4/+51
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8017: Don't drop type params in doc-test paths r=Veykril a=Veykril Closes #7995 Co-authored-by: Lukas Wirth <[email protected]>
| * | | | | | Don't drop type params in doc-test pathsLukas Wirth2021-03-141-4/+51
| | | | | | |
* | | | | | | Merge #8014bors[bot]2021-03-143-32/+88
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8014: increase completion relevance for items in local scope r=matklad a=JoshMcguigan This PR provides a small completion relevance score bonus for items in local scope. The changes here are relatively minimal, since `coc` by default pre-sorts by position in file. But as we move toward fully server side sorting #7935 I think we'll want some relevance score bump for items in local scope. ### Before Note `let~` and `syntax` are both ahead of locals. Ultimately we may decide that `let~` is a high relevance completion given my cursor position here, but that should be done with some explicit scoring on the server side, rather than being caused by (I think) `coc` preferring shorter completions. ![pre-local-score](https://user-images.githubusercontent.com/22216761/111073414-c97ad600-849b-11eb-84e7-fcee130536f0.png) ### After ![post-local-score](https://user-images.githubusercontent.com/22216761/111073422-d0094d80-849b-11eb-92ec-7ae5ec3b190d.png) Co-authored-by: Josh Mcguigan <[email protected]>
| * | | | | | increase completion relevance for items in local scopeJosh Mcguigan2021-03-143-32/+88
| | | | | | |
* | | | | | | Merge #8016bors[bot]2021-03-1411-84/+89
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | / / / | | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | 8016: More Chalk adaptations r=flodiebold a=flodiebold - rename a bunch of fields - use `chalk_ir::FnSig` Co-authored-by: Florian Diebold <[email protected]>
| * | | | | More renamingFlorian Diebold2021-03-145-19/+23
| | | | | |
| * | | | | Use chalk_ir::FnSigFlorian Diebold2021-03-145-21/+22
| | | | | |
| * | | | | Rename some fields to their Chalk namesFlorian Diebold2021-03-1411-47/+47
|/ / / / /
* | | | | Merge #7993bors[bot]2021-03-141-21/+137
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7993: Use auto-deref in completion scoring r=JoshMcguigan a=ivan770 Closes #7982 Co-authored-by: ivan770 <[email protected]>
| * | | | | Skip ref_match on same types, remove sorting in testsivan7702021-03-141-38/+25
| | | | | |
| * | | | | Added both references and original matches to testsivan7702021-03-131-34/+42
| | | | | |
| * | | | | Fix incorrect DerefMut test reference typeivan7702021-03-131-1/+1
| | | | | |
| * | | | | Make relevance tests display references, suggest derefs only when neededivan7702021-03-132-16/+84
| | | | | |
| * | | | | Simplify call site and deref completion testivan7702021-03-131-85/+16
| | | | | |
| * | | | | Count derefs as matched types if possibleivan7702021-03-132-4/+126
| | | | | |
* | | | | | Merge #8013bors[bot]2021-03-141-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8013: Fix `cargo xtask lint` references r=matklad a=lnicola Co-authored-by: Laurențiu Nicola <[email protected]>
| * | | | | | Fix `cargo xtask lint` referencesLaurențiu Nicola2021-03-141-2/+2
|/ / / / / /
* | | | | | Merge #8012bors[bot]2021-03-143-22/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8012: xtask: replace "lint" command by a simply cargo alias r=matklad a=matthiaskrgr This strips the run_clippy implementation out of xtask and replaces it by a simple "cargo lint" alias which runs clippy with the corresponding flags. Unfortunately I could not name the alias "clippy" because that would lead to infinite recursion. :sweat_smile: Co-authored-by: Matthias Krüger <[email protected]>
| * | | | | | xtask: replace "lint" command by a simply cargo aliasMatthias Krüger2021-03-143-22/+1
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This strips the run_clippy implementation out of xtask and replaces it by a simple "cargo lint" alias which runs clippy with the corresponding flags. Unfortunately I could not name the alias "clippy" because that would lead to infinite recursion.
* | | | | | Merge #8011bors[bot]2021-03-143-1/+8
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8011: Add no-sysroot flag for analysis-stats r=edwin0cheng a=edwin0cheng Add `no-sysroot` flag for `rust-analyzer analysis-stats`. It is very useful for debugging propose. bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * | | | | | Add no-sysroot flag for analysis-statsEdwin Cheng2021-03-143-1/+8
| | | | | | |