Commit Graph

240 Commits

Author SHA1 Message Date
Aleksey Kladov
8a39519e1c Cleanup 2020-02-06 15:10:07 +01:00
Aleksey Kladov
88267c86c0 cleanup imports 2020-02-06 14:03:45 +01:00
Aleksey Kladov
939f05f3e3 Move to a crate 2020-02-06 12:43:56 +01:00
Aleksey Kladov
1bfb111cf9 Move change to ide-db 2020-02-06 12:35:40 +01:00
Aleksey Kladov
ee76e6141e Fix test imports 2020-02-06 12:26:10 +01:00
Aleksey Kladov
0509a0a34e Move Query 2020-02-06 12:24:13 +01:00
Aleksey Kladov
ad247aa670 Move symbol_index 2020-02-06 12:22:35 +01:00
Aleksey Kladov
ec95152a4e Move FeatureFlags 2020-02-06 12:18:52 +01:00
Aleksey Kladov
ee2ee1a8ff Move line_index 2020-02-06 12:17:40 +01:00
Aleksey Kladov
551f33d754 Move ide-db 2020-02-06 12:08:08 +01:00
Aleksey Kladov
896906fea8 Start ide_db 2020-02-06 12:07:06 +01:00
Kirill Bulatov
78092c7c66 Apply the reviews suggestions 2020-02-05 12:47:28 +02:00
Kevin DeLorey
fc46ed81ee Add detection for a user already starting a fn impl and still providing completion. 2020-02-04 22:04:57 -06:00
Aleksey Kladov
f5a20014ce minor, if let else -> match 2020-02-04 13:41:56 +01:00
Veetaha
9e7eaa959f ra_syntax: refactored the lexer design as per @matklad and @kiljacken PR review 2020-02-04 00:00:55 +02:00
Veetaha
ac37a11f04 Reimplemented lexer with vectors instead of iterators 2020-02-04 00:00:55 +02:00
Kirill Bulatov
fcf5bbbbeb Fix inlay hints test snippet compilation 2020-02-03 13:35:14 +02:00
Aleksey Kladov
24ad1cce2c Avoid premature pessimization
The extra allocation for message should not matter here at all, but
using a static string is just as ergonomic, if not more, and there's
no reason to write deliberately slow code
2020-02-02 18:56:37 +01:00
Kirill Bulatov
c669b2f489 Code review fixes 2020-02-02 14:27:52 +02:00
Kirill Bulatov
6dae5cbb11 Require ModPath for importing 2020-02-02 14:06:51 +02:00
Aleksey Kladov
f1720d7983 Re-sync queries for memory usage measurnment 2020-01-29 16:10:46 +01:00
Kevin DeLorey
698ff91c13 Already implemented fn will no longer be suggested for trait implementations. 2020-01-28 20:33:12 -06:00
Mikhail Modin
fbc3ffcee6 Improves reference search by StructLiteral 2020-01-27 21:34:19 +00:00
bors[bot]
1d729033eb
Merge #2883
2883: Implement Syntax Highlight inside macro call r=matklad a=edwin0cheng



Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2020-01-27 13:36:26 +00:00
bors[bot]
4f9506416c
Merge #2887
2887: Initial auto import action implementation r=matklad a=SomeoneToIgnore

Closes https://github.com/rust-analyzer/rust-analyzer/issues/2180

Adds an auto import action implementation.

This implementation is not ideal and has a few limitations:

* The import search functionality should be moved into a separate crate accessible from ra_assists.
This requires a lot of changes and a preliminary design. 
Currently the functionality is provided as a trait impl, more on that here: https://github.com/rust-analyzer/rust-analyzer/issues/2180#issuecomment-575690942

* Due to the design desicion from the previous item, no doctests are run for the new aciton (look for a new FIXME in the PR)

* For the same reason, I have to create the mock trait implementaion to test the assist

* Ideally, I think we should have this feature as a diagnostics (that detects an absense of an import) that has a corresponding quickfix action that gets evaluated on demand.
Curretly we perform the import search every time we resolve the import which looks suboptimal.
This requires `classify_name_ref` to be moved from ra_ide, so not done currently.

A few improvements to the imports mechanism to be considered later:

* Constants like `ra_syntax::SyntaxKind::NAME` are not imported, because they are not present in the database

* Method usages are not imported, they are found in the database, but `find_use_path` does not return any import paths for them

* Some import paths returned by the `find_use_path` method end up in `core::` or `alloc::` instead of `std:`, for example: `core::fmt::Debug` instead of `std::fmt::Debug`.
This is not an error techically, but still looks weird.

* No detection of cases where a trait should be imported in order to be able to call a method

* Improve `auto_import_text_edit` functionality: refactor it and move away from the place it is now, add better logic for merging the new import with already existing imports

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2020-01-27 13:04:53 +00:00
Kirill Bulatov
9be1ab7ff9 Code review fixes 2020-01-27 14:42:45 +02:00
Kirill Bulatov
d0a782ef1c Have a better trait interface 2020-01-27 00:17:10 +02:00
Kirill Bulatov
bef5cf0b99 Raise the import search query cap 2020-01-27 00:16:29 +02:00
Kirill Bulatov
f57239729c Remove unnecessary lifetime parameter 2020-01-27 00:16:29 +02:00
Kirill Bulatov
316795e074 Initial auto import action implementation 2020-01-27 00:16:29 +02:00
Jeremy Kolb
b89991daed Update crates 2020-01-26 10:46:45 -05:00
bors[bot]
adda6dbdf8
Merge #2899
2899: Provide more runners for potential tests r=matklad a=SomeoneToIgnore

Based on the https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Runners.20for.20custom.20test.20annotations discussion.

Adds a test runner for every method that has an annotation that contains `test` word in it, allowing to run tests annotated with custom testing annotations such as `#[tokio::test]`, `#[test_case(...)]` and others at costs of potentially emitting some false-positives.

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2020-01-25 11:10:28 +00:00
Aleksey Kladov
b90ea640e6 Cancel requests during shutdown 2020-01-24 16:35:37 +01:00
Kirill Bulatov
3137215e8d Provide more runners for potential tests 2020-01-23 13:40:21 +02:00
Kevin DeLorey
bc1fc6239d Renamed the trait completion mod. 2020-01-22 22:38:03 -06:00
Kevin DeLorey
e3cda83f90 Added basic support for completing fn for trait impl. 2020-01-22 22:34:00 -06: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