Kirill Bulatov
3137215e8d
Provide more runners for potential tests
2020-01-23 13:40:21 +02:00
Kirill Bulatov
4029e44102
Omit default parameters for reference types
2020-01-22 16:55:09 +02:00
Edwin Cheng
f320af4d63
Implement Syntax Highlight inside Macro
2020-01-21 00:06:47 +08:00
Florian Diebold
18ec4e3403
Improve parameter hints a bit & add emacs support
...
- just include the name, not e.g. `mut`
- don't return empty hints (or `_`)
2020-01-18 13:40:32 +01:00
Aleksey Kladov
595b06a1b8
Create modules via SourceBinder
2020-01-16 17:33:07 +01:00
Aleksey Kladov
9a6c26e348
Move module to SourceBinder
2020-01-16 16:53:11 +01:00
Aleksey Kladov
7aa627fe58
Move more stuff to SourceBinder
2020-01-16 16:37:51 +01:00
Aleksey Kladov
a3d6ddbe69
More natural trait setup
2020-01-16 16:27:21 +01:00
Aleksey Kladov
81a45ca1b3
Make FromSource private
2020-01-16 16:08:46 +01:00
Aleksey Kladov
272f6dfd9e
Micro-optimize type hints to avoid allocations
2020-01-16 14:31:34 +01:00
bors[bot]
c78d269b66
Merge #2837
...
2837: Accidentally quadratic r=matklad a=matklad
Our syntax highlighting is accdentally quadratic. Current state of the PR fixes it in a pretty crude way, looks like for the proper fix we need to redo how source-analyzer works.
**NB:** don't be scared by diff stats, that's mostly a test-data file
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-01-15 19:38:10 +00:00
Kirill Bulatov
d51cf7794d
itertools::Either -> either::Either
2020-01-15 20:20:20 +02:00
Kirill Bulatov
78a21253b4
Apply the api design suggestions
2020-01-15 20:17:17 +02:00
Kirill Bulatov
73dc8b6f06
Another attempt to add multiple edits
2020-01-15 20:16:27 +02:00
Aleksey Kladov
aaef88db0e
Typos
2020-01-15 16:53:01 +01:00
Aleksey Kladov
5b255b4e6b
⬆️ once_cell
2020-01-15 16:52:28 +01:00
Aleksey Kladov
787d1aba63
Add comment
2020-01-15 16:52:28 +01:00
Aleksey Kladov
4194e5c88c
Optimize inlay hints
2020-01-15 16:52:28 +01:00
Aleksey Kladov
11d6b9dadd
Only new-style classification
2020-01-15 16:52:28 +01:00
Aleksey Kladov
35bfeaf4af
Add a test
2020-01-15 16:52:28 +01:00
Aleksey Kladov
c640c2ea11
Make syntax highlighting linear
2020-01-15 16:52:28 +01:00
Aleksey Kladov
ccfe53376a
Introduce SourceBinder
2020-01-15 16:52:28 +01:00
bors[bot]
876f92d547
Merge #2843
...
2843: Add inlay parameter name hints for call expr r=matklad a=imtsuki
This patch adds Intellij-like parameter name hints for literal values in function calls.
<img width="624" alt="Screenshot" src="https://user-images.githubusercontent.com/8423594/72366533-68d7f800-3735-11ea-9279-cf193ca8ca2f.png ">
Signed-off-by: imtsuki <me@qjx.app>
Co-authored-by: imtsuki <me@qjx.app>
2020-01-15 10:24:51 +00:00
imtsuki
d854ad8f27
FnSignature: use unwrap_or_default for parameter_name_list
...
Signed-off-by: imtsuki <me@qjx.app>
2020-01-15 09:30:19 +08:00
imtsuki
d78a3cb638
Update test snapshot
...
Signed-off-by: imtsuki <me@qjx.app>
2020-01-15 01:32:03 +08:00
imtsuki
c390e92fdd
Add inlay parameter name hints for function calls
...
Signed-off-by: imtsuki <me@qjx.app>
2020-01-15 01:18:52 +08:00
Aleksey Kladov
a38540771f
Move Type API to type
2020-01-14 14:42:52 +01:00
Aleksey Kladov
52e7f67128
Move impls_future to Type, where it belongs
2020-01-14 11:29:43 +01:00
Aleksey Kladov
0358f5fdeb
Use lang-items to resolve future trait
2020-01-14 11:29:43 +01:00
kjeremy
c5c5f4260b
Readability
2020-01-13 11:38:53 -05:00
kjeremy
a82c679c97
Some clippy lints
2020-01-13 11:27:06 -05:00
memoryruins
5575588387
Add macro_rules item snippet
2020-01-12 18:47:15 -05:00
Roland Ruckerbauer
20b8d283ae
Remove hir usage from macro_rules! detection in structure_node()
2020-01-12 17:34:57 +01:00
Roland Ruckerbauer
15c5426b54
Use hir .path() and .name() to differentiate
...
macro call and macro definition
2020-01-12 17:34:57 +01:00
Roland Ruckerbauer
c6655c67d2
Added test for file_structure unidentified macro definition
2020-01-12 17:34:57 +01:00
Roland Ruckerbauer
db151763d4
Fix file_structure() to recognize macro_rules!
...
where first token != "macro_rules"
2020-01-12 17:34:57 +01:00
Edwin Cheng
0593da9a36
Fix format
2020-01-12 20:25:58 +08:00
Edwin Cheng
384e1ced88
Use prev_token and next_token
2020-01-12 20:25:58 +08:00
Edwin Cheng
b7ab079211
Use indices first and last instead of min-max
2020-01-12 20:25:58 +08:00
Edwin Cheng
caed836e41
Use first and last token only
2020-01-12 20:25:58 +08:00
Edwin Cheng
b30e6a7b56
Handle extend selection in recursive macro
2020-01-12 20:25:58 +08:00
Edwin Cheng
07f4171b18
Minor fix
2020-01-12 20:25:58 +08:00
Edwin Cheng
4c4416543a
Fix formatting
2020-01-12 20:25:58 +08:00
Edwin Cheng
83b2d78bbb
Supporting extend selection inside macro calls
2020-01-12 20:25:58 +08:00
Edwin Cheng
db5f73d261
Add test
2020-01-12 19:24:34 +08:00
Edwin Cheng
d7be1a4372
Use attr location for builtin macro goto-imp
2020-01-12 18:08:53 +08:00
Florian Diebold
15fc643e05
Fix ordering problem between qualifying paths and substituting params
2020-01-11 23:33:04 +01:00
kjeremy
32540abcb3
Add AccessMode to decls
2020-01-10 15:14:19 -05:00
kjeremy
49fd6a5228
Split Declaration out into it's own type
2020-01-10 15:14:19 -05:00
kjeremy
cc96ddfe69
Simplify and update tests to account for access
2020-01-10 15:14:19 -05:00
Jeremy Kolb
6c89d86ade
Tweaks
2020-01-10 15:14:19 -05:00
Jeremy Kolb
d993f329a0
Basic DocumentHighlightKind support for assignments
2020-01-10 15:14:19 -05:00
Edwin Cheng
19094abd41
Proper handling local in hover
2020-01-11 01:51:08 +08:00
Aleksey Kladov
cf5bdf464c
Merge pull request #2732 from detrumi/cargo-toml-not-found-message-toggle
...
Flag to hide cargo.toml not found error
2020-01-09 15:16:39 +01:00
bors[bot]
3263c70766
Merge #2772
...
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 <kjeremy@gmail.com>
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2020-01-09 12:26:59 +00:00
Jeremy Kolb
6fc80efe77
visibility tweak
2020-01-09 07:26:04 -05:00
kjeremy
9791b9c36a
Actually test references
2020-01-08 16:35:58 -05:00
Michal Terepeta
d761435ba0
Remove the Default impl for SourceRoot
...
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 <michal.terepeta@gmail.com>
2020-01-08 19:42:27 +01:00
kjeremy
c7b2bc1363
Move private API down
2020-01-08 11:33:04 -05:00
Jeremy Kolb
1b19a8aa5e
Implement proposed CallHierarchy feature
...
See: https://github.com/microsoft/vscode-languageserver-node/blob/master/protocol/src/protocol.callHierarchy.proposed.ts
2020-01-08 10:15:49 -05:00
Mikhail Modin
fb25c91979
Adds a way to limits reference search by StructLiteral
2020-01-08 15:21:54 +01:00
Aleksey Kladov
5d8f2bd822
Merge pull request #2762 from edwin0cheng/fix-2759
...
Reject tuple index for missing fields assist
2020-01-08 12:49:54 +01:00
Edwin Cheng
a4c9babedb
Proper emit diagnostic without fix
2020-01-08 02:18:43 +08:00
Edwin Cheng
e55e6da13a
Reject tuple index for missing fields assist
2020-01-08 02:08:17 +08:00
Edwin Cheng
1fdee24608
Use src node for analyze source
2020-01-08 00:23:53 +08:00
Michal Terepeta
be967b94e1
Fix a problem with Durability
of libraries
...
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 <michal.terepeta@gmail.com>
2020-01-06 22:21:56 +01:00
Michal Terepeta
d6c2a59538
Split infer
query into two for better profiling
...
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 <michal.terepeta@gmail.com>
2020-01-03 19:58:11 +01:00
Wilco Kusee
e7bb82c3a4
Allow disabling Cargo.toml not found error
2020-01-03 15:04:54 +01:00
Michal Terepeta
7cd6f12926
Split crate_def_map
into two methods
...
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 <michal.terepeta@gmail.com>
2020-01-03 13:59:46 +01:00
Aleksey Kladov
26bd7a896b
Drop support for legacy colorization
2019-12-31 14:11:25 +01:00
bors[bot]
cdcb3d3833
Merge #2667
...
2667: Visibility r=matklad a=flodiebold
This adds the infrastructure for handling visibility (for fields and methods, not in name resolution) in the HIR and code model, and as a first application hides struct fields from completions if they're not visible from the current module. (We might want to relax this again later, but I think it's ok for now?)
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-29 12:24:19 +00:00
Florian Diebold
9fd2c813ca
visible_from -> is_visible_from
2019-12-27 11:25:04 +01:00
Florian Diebold
9e9c4be48a
Hide completions for private struct fields
2019-12-26 16:23:40 +01:00
Kirill Bulatov
242be3631e
Omit closure parameters
2019-12-23 18:30:25 +02:00
Aleksey Kladov
e424545c0f
Rudimentary name resolution for local items
2019-12-22 22:41:21 +01:00
bors[bot]
f874d6c475
Merge #2637
...
2637: Optimize and profile r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-21 17:46:52 +00:00
Aleksey Kladov
d4b135f38c
Optimize and profile
2019-12-21 18:46:21 +01:00
Aleksey Kladov
02f79e37ca
Remove import source map
2019-12-21 17:26:28 +01:00
Aleksey Kladov
4e0168ec14
Remove imports from hir
2019-12-21 15:18:14 +01:00
Aleksey Kladov
973b5cf7e2
Revert "Merge #2629 "
...
This reverts commit cdc9d682b0
, reversing
changes made to 90ef070db3
.
2019-12-21 15:04:33 +01:00
Aleksey Kladov
d335311893
Remove import source map
2019-12-21 12:45:33 +01:00
Aleksey Kladov
67ba9072fa
Remove hir for imports
2019-12-21 12:18:20 +01:00
kjeremy
0d5d63a80e
Clippy lints
2019-12-20 15:14:30 -05:00
bors[bot]
02f9e04ee9
Merge #2617
...
2617: Remove index resolving from hover r=matklad a=kjeremy
I have left in `HoverResult`'s support for multiple entries because we may still want that at some point.
Per https://github.com/rust-analyzer/rust-analyzer/issues/2542#issuecomment-565238142
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-12-20 18:16:16 +00:00
kjeremy
77626d7bda
Remove unused imports
2019-12-20 11:18:24 -05:00
kjeremy
428358925c
Remove the index resolution from hover
...
We are reasonably precise now to do this.
2019-12-20 11:16:47 -05:00
Edwin Cheng
4a7e19946a
Fix parser for macro call in pattern position
2019-12-20 23:26:04 +08:00
Aleksey Kladov
3d4b48e481
Fix resolve for field init shorthand
2019-12-20 14:48:14 +01:00
Aleksey Kladov
77af7b087f
Fix highlighting for field init shorthand
2019-12-20 14:12:14 +01:00
Aleksey Kladov
d057afb945
Improve highlighting test
2019-12-20 14:12:14 +01:00
Aleksey Kladov
a04177f135
Add local functions to bodies
2019-12-20 11:52:17 +01:00
Kirill Bulatov
f407ac2be3
Omit default types for hover pop-ups
2019-12-19 16:47:09 +02:00
Kirill Bulatov
4ed78f80f4
Remove TruncateOptions struct
2019-12-19 16:43:41 +02:00
Kirill Bulatov
4fb25ef43b
Do not add any new configuration parameters
2019-12-19 16:18:09 +02:00
Kirill Bulatov
3969c7c853
Ensure hover shows full type declaration
2019-12-19 12:45:00 +02:00
Kirill Bulatov
14c167a9f6
Omit default parameter types
2019-12-19 12:27:33 +02:00
bors[bot]
b63c7ecab9
Merge #2311
...
2311: See through Macros for SignatureHelp r=matklad a=kjeremy
Note: we meed to skip the trivia filter to make sure that
`covers!(call_info_bad_offset)` succeeds otherwise we exit call_info
too early.
Also the test doesn't pass: `FnCallNode::with_node` always detects
a MacroCall which is obviously wrong.
Fixes #2310
Co-authored-by: kjeremy <kjeremy@gmail.com>
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-12-18 16:44:35 +00:00
Aleksey Kladov
7c25224f05
Don't bother with focus range for navigation to locals
2019-12-18 16:45:42 +01:00
Aleksey Kladov
46a299bcee
Refactor goto tests to always specify texts
2019-12-18 16:00:35 +01:00
Aleksey Kladov
69c944a1e2
Add blank lines for readability
2019-12-18 16:00:35 +01:00