aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #2786bors[bot]2020-01-101-1/+19
|\ | | | | | | | | | | | | | | | | | | | | | | 2786: Proper handling local in hover r=flodiebold a=edwin0cheng This PR implement back the `Local` hover information generation, which is fall back to a general case catch previously : https://github.com/rust-analyzer/rust-analyzer/blob/9a44f627be0b3c49184e3ad594849f9b5ed78daa/crates/ra_ide/src/hover.rs#L173-L182 Co-authored-by: Edwin Cheng <[email protected]>
| * Proper handling local in hoverEdwin Cheng2020-01-101-1/+19
| |
* | Merge #2785bors[bot]2020-01-102-0/+18
|\ \ | |/ |/| | | | | | | | | | | 2785: Expand PAREN_EXPR as expression r=matklad a=edwin0cheng Co-authored-by: Edwin Cheng <[email protected]>
| * Expand PAREN_EXPR as expressionEdwin Cheng2020-01-102-0/+18
| |
* | Parse trait aliasesEmil Lauridsen2020-01-093-0/+141
| |
* | Merge #2778bors[bot]2020-01-094-9/+7
|\ \ | | | | | | | | | | | | | | | | | | | | | 2778: :arrow_up: rowan r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | :arrow_up: rowanAleksey Kladov2020-01-094-9/+7
| | |
* | | Merge pull request #2732 from detrumi/cargo-toml-not-found-message-toggleAleksey Kladov2020-01-093-19/+35
|\ \ \ | | | | | | | | Flag to hide cargo.toml not found error
| * | | Remove unneeded Box::newWilco Kusee2020-01-081-1/+1
| | | | | | | | | | | | Co-Authored-By: Aleksey Kladov <[email protected]>
| * | | Derive debugWilco Kusee2020-01-081-7/+1
| | | |
| * | | Use downcasting for CargoTomlNotFoundErrorWilco Kusee2020-01-086-97/+48
| | | |
| * | | Allow disabling Cargo.toml not found errorWilco Kusee2020-01-033-19/+24
| | | |
| * | | Move error to new fileWilco Kusee2020-01-032-54/+61
| | | |
| * | | Split errors into WorkspaceError enumWilco Kusee2020-01-034-30/+89
| | | |
* | | | Merge #2772bors[bot]2020-01-092-15/+99
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2772: Actually test references r=kjeremy a=kjeremy This will be a little more work when `ReferenceSearchResults` change but I think it's easier to maintain in the end. It also follows a similar pattern to navigation targets and call hierarchy. Co-authored-by: kjeremy <[email protected]> Co-authored-by: Jeremy Kolb <[email protected]>
| * | | | visibility tweakJeremy Kolb2020-01-091-2/+2
| | | | |
| * | | | Actually test referenceskjeremy2020-01-082-15/+99
| | |/ / | |/| |
* | | | Merge #2771bors[bot]2020-01-093-8/+9
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2771: Remove the Default impl for SourceRoot r=matklad a=michalt Let's be always explicit whether we create a library (i.e., an immutable dependency) or a local `SourceRoot`, since it can have a large impact on the validation performance in salsa. (we found it the hard way recently, where the `Default` instance made it quite tricky to spot a bug) Signed-off-by: Michal Terepeta <[email protected]> Co-authored-by: Michal Terepeta <[email protected]>
| * | | | Remove the Default impl for SourceRootMichal Terepeta2020-01-083-8/+9
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let's be always explicit whether we create a library (i.e., an immutable dependency) or a local `SourceRoot`, since it can have a large impact on the validation performance in salsa. (we found it the hard way recently, where the `Default` instance made it quite tricky to spot a bug) Signed-off-by: Michal Terepeta <[email protected]>
* | | | Merge #2777bors[bot]2020-01-091-2/+3
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | 2777: Better error message r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | Better error messageAleksey Kladov2020-01-091-2/+3
| | |/ | |/| | | | | | | closes #2775
* | | Move private API downkjeremy2020-01-081-15/+15
| | |
* | | Implement proposed CallHierarchy featureJeremy Kolb2020-01-0810-15/+501
|/ / | | | | | | See: https://github.com/microsoft/vscode-languageserver-node/blob/master/protocol/src/protocol.callHierarchy.proposed.ts
* | Adds a way to limits reference search by StructLiteralMikhail Modin2020-01-083-18/+100
| |
* | Merge pull request #2762 from edwin0cheng/fix-2759Aleksey Kladov2020-01-081-11/+25
|\ \ | | | | | | Reject tuple index for missing fields assist
| * | Proper emit diagnostic without fixEdwin Cheng2020-01-071-19/+25
| | |
| * | Reject tuple index for missing fields assistEdwin Cheng2020-01-071-0/+8
| | |
* | | Merge pull request #2760 from edwin0cheng/fix-descend-into-macrosAleksey Kladov2020-01-071-2/+3
|\ \ \ | | | | | | | | Use src node for analyze source in `descend_into_macros`
| * | | Use src node for analyze sourceEdwin Cheng2020-01-071-2/+3
| |/ /
* | | Merge pull request #2756 from matklad/retasksAleksey Kladov2020-01-071-0/+1
|\ \ \ | | | | | | | | :arrow_up: crates
| * | | Fix back compatAleksey Kladov2020-01-071-0/+1
| |/ /
* / / Fix panic in tuple fieldsAleksey Kladov2020-01-071-1/+4
|/ /
* | Improve const generics parsingMichael Chesser2020-01-068-21/+120
| | | | | | | | | | - Handle const generics type args - Fix issue with const generic as first parameter in trait impl
* | Fix a problem with `Durability` of librariesMichal Terepeta2020-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When processing a change with added libraries, we used `Default::default` for `SourceRoot` which sets `is_library` to false. Since we use `is_library` to decide whether to use low or high durability, I believe that this caused us to mark many library dependencies as having low durability and thus increased the size of the graph that salsa needed to verify on every change. Based on my initial tests this speeds up the `CrateDefMapQuery` on rust-analyzer from about ~64ms to ~14ms and reduces the number of validations for the query from over 60k to about 7k. Signed-off-by: Michal Terepeta <[email protected]>
* | Merge #2726bors[bot]2020-01-061-4/+25
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2726: Improve profiling output when duration filter is specified r=matklad a=michalt In particular: - Use strict inequality for comparisons, since that's what the filter syntax supports. - Convert to millis for comparisons, since that's the unit used both for the filter and when printing. Now something like `RA_PROFILE='*>0'` will only print things that took at least 1ms (when rounded to millis). Signed-off-by: Michal Terepeta <[email protected]> Co-authored-by: Michal Terepeta <[email protected]>
| * | Improve profiling output when duration filter is specifiedMichal Terepeta2020-01-021-4/+25
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular: - Use strict inequality for comparisons, since that's what the filter syntax supports. - Convert to millis for comparisons, since that's the unit used both for the filter and when printing. Now something like `RA_PROFILE='*>0'` will only print things that took at least 1ms (when rounded to millis). Signed-off-by: Michal Terepeta <[email protected]>
* | BinOp helper to detect assignmentJeremy Kolb2020-01-042-11/+19
| |
* | Merge #2745bors[bot]2020-01-041-6/+0
|\ \ | | | | | | | | | | | | | | | | | | | | | 2745: remove unused file r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | remove unused fileAleksey Kladov2020-01-041-6/+0
| | |
* | | Merge #2743bors[bot]2020-01-033-2349/+1611
|\| | | | | | | | | | | | | | | | | | | | | | | 2743: Switch ast declaration from ron to a macro r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | Switch ast declaration from ron to a macroAleksey Kladov2020-01-033-2349/+1611
| |/
* | Merge #2742bors[bot]2020-01-035-10/+19
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2742: Split `infer` query into two for better profiling r=flodiebold a=michalt This is the same change as we did with `crate_def_map` and it does seem that we mostly spend time in salsa, without recomputing much on rust-analyzer side. Example output: ``` 233ms - handle_inlay_hints 163ms - get_inlay_hints 163ms - SourceAnalyzer::new 67ms - def_with_body_from_child_node 67ms - analyze_container 67ms - analyze_container 67ms - Module::from_definition 67ms - Module::from_file 67ms - crate_def_map 0ms - parse_macro_query (6 calls) 0ms - raw_items_query (1 calls) 66ms - ??? 0ms - crate_def_map (1 calls) 0ms - crate_def_map (1 calls) 96ms - infer 2ms - trait_solve_query (2 calls) 94ms - ??? 0ms - body_with_source_map_query (1 calls) 0ms - crate_def_map (1 calls) [...] ``` Signed-off-by: Michal Terepeta <[email protected]> Co-authored-by: Michal Terepeta <[email protected]>
| * | Split `infer` query into two for better profilingMichal Terepeta2020-01-035-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the same change as we did with `crate_def_map` and it does seem that we mostly spend time in salsa, without recomputing much on rust-analyzer side. Example output: ``` 233ms - handle_inlay_hints 163ms - get_inlay_hints 163ms - SourceAnalyzer::new 67ms - def_with_body_from_child_node 67ms - analyze_container 67ms - analyze_container 67ms - Module::from_definition 67ms - Module::from_file 67ms - crate_def_map 0ms - parse_macro_query (6 calls) 0ms - raw_items_query (1 calls) 66ms - ??? 0ms - crate_def_map (1 calls) 0ms - crate_def_map (1 calls) 96ms - infer 2ms - trait_solve_query (2 calls) 94ms - ??? 0ms - body_with_source_map_query (1 calls) 0ms - crate_def_map (1 calls) [...] ``` Signed-off-by: Michal Terepeta <[email protected]>
* | | Fix unused import for windows in cargo_watch testEdwin Cheng2020-01-031-0/+2
| | |
* | | Fix #2705Florian Diebold2020-01-032-1/+18
|/ / | | | | | | | | | | | | | | The `-` turned into a `+` during a refactoring. The original issue was caused by `Read` resolving wrongly to a trait without type parameters instead of a struct with one parameter; this only fixes the crash, not the wrong resolution.
* | Add `_query` suffix to `compute_crate_def_map` for consistencyMichal Terepeta2020-01-032-2/+2
| | | | | | | | Signed-off-by: Michal Terepeta <[email protected]>
* | Split `crate_def_map` into two methodsMichal Terepeta2020-01-034-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change: - introduces `compute_crate_def_map` query and renames `CrateDefMap::crate_def_map_query` for consistency, - annotates `crate_def_map` as `salsa::transparent` and adds a top-level `crate_def_map` wrapper function around that starts the profiler and immediately calls into `compute_crate_def_map` query. This allows us to better understand where we spent the time, in particular, how much is spent in the recomputaiton and how much in salsa. Example output (where we don't actually re-compute anything, but the query still takes a non-trivial amount of time): ``` 211ms - handle_inlay_hints 150ms - get_inlay_hints 150ms - SourceAnalyzer::new 65ms - def_with_body_from_child_node 65ms - analyze_container 65ms - analyze_container 65ms - Module::from_definition 65ms - Module::from_file 65ms - crate_def_map 1ms - parse_macro_query (6 calls) 0ms - raw_items_query (1 calls) 64ms - ??? ``` Signed-off-by: Michal Terepeta <[email protected]>
* | Merge #2730bors[bot]2020-01-031-0/+3
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2730: Add `profile` calls to {Module,Function}::diagnostics r=matklad a=michalt With this change the output `ra_prof` gives a better indication where the time is spent. Example output: ``` 213ms - publish_diagnostics 213ms - diagnostics 70ms - Module::from_definition 70ms - Module::from_file 132ms - Module::diagnostics 78ms - Function::diagnostics 0ms - body_with_source_map_query (1 calls) 2ms - trait_solve_query (1 calls) 76ms - ??? 15ms - Function::diagnostics 0ms - body_with_source_map_query (1 calls) 15ms - trait_solve_query (5 calls) 38ms - Function::diagnostics (51 calls) 8ms - parse_query (1 calls) ``` Signed-off-by: Michal Terepeta <[email protected]> Co-authored-by: Michal Terepeta <[email protected]>
| * | Add `profile` calls to {Module,Function}::diagnosticsMichal Terepeta2020-01-031-0/+3
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change the output `ra_prof` gives a better indication where the time is spent. Example output: ``` 213ms - publish_diagnostics 213ms - diagnostics 70ms - Module::from_definition 70ms - Module::from_file 132ms - Module::diagnostics 78ms - Function::diagnostics 0ms - body_with_source_map_query (1 calls) 2ms - trait_solve_query (1 calls) 76ms - ??? 15ms - Function::diagnostics 0ms - body_with_source_map_query (1 calls) 15ms - trait_solve_query (5 calls) 38ms - Function::diagnostics (51 calls) 8ms - parse_query (1 calls) ``` Signed-off-by: Michal Terepeta <[email protected]>
* / Remove a duplicate line in `collect_defs`Michal Terepeta2020-01-031-1/+0
|/ | | | Signed-off-by: Michal Terepeta <[email protected]>