Commit Graph

1861 Commits

Author SHA1 Message Date
Bernardo
d63e1cebff use Roots in watcher 2019-01-26 11:46:37 +03:00
Bernardo
86fadbd4e5 extract Roots struct 2019-01-26 11:46:37 +03:00
Bernardo
cfbf47b002 review fixes 2019-01-26 11:46:37 +03:00
Bernardo
34a34f9399 use released notifiy version, add TODO comment 2019-01-26 11:46:37 +03:00
Bernardo
be14ab217c better test, avoid duplicated events 2019-01-26 11:46:27 +03:00
Bernardo
0a08650852 hardcode ".git" and "node_modules" also 2019-01-26 11:46:27 +03:00
Bernardo
10a24cf649 simplify and optimize RootFilterby determining if is contained first 2019-01-26 11:46:27 +03:00
Bernardo
eeed6cf53b fix recursive watch 2019-01-26 11:46:27 +03:00
Bernardo
2a1afad3ed avoid boxing 2019-01-26 11:46:27 +03:00
Bernardo
277e0f1baa move watcher to io module 2019-01-26 11:46:27 +03:00
Bernardo
7f7c4e7465 do not emit create for directory again 2019-01-26 11:46:27 +03:00
Bernardo
f88355ccb5 refactor, put watcher with io::Worker
use `RootFilter` to filter recursive watches
untested
2019-01-26 11:46:27 +03:00
Bernardo
eacf7aeb42 ignore check event dir for ignore, cleanup tests 2019-01-26 11:46:27 +03:00
Bernardo
fb1d748a2c actually drop watcher, use parking_lot::Mutex 2019-01-26 11:46:27 +03:00
Bernardo
f181e36a44 handle recursive watching ourselves 2019-01-26 11:46:27 +03:00
Bernardo
e69b620f0d add missing Task::HandleChange 2019-01-26 11:46:27 +03:00
Bernardo
abd8ccefa4 better error handling 2019-01-26 11:46:27 +03:00
Bernardo
b0f7e72c49 use notify with fix 2019-01-26 11:46:27 +03:00
Bernardo
5f31d495bd reference notify issue 2019-01-26 11:46:16 +03:00
Bernardo
76bf7498aa handle watched events filtering in Vfsadd is_overlayedload changed files contents in io 2019-01-26 11:46:16 +03:00
Bernardo
6b86f038d6 refator to move all io to io module
use same channel for scanner and watcher
some implementations pending
2019-01-26 11:46:16 +03:00
Bernardo
d032a1a4e8 complete test 2019-01-26 11:46:16 +03:00
Bernardo
1d5eaefe8a initial Watcher impl 2019-01-26 11:46:16 +03:00
Aleksey Kladov
4711cbcace rename FilesDatabase -> SourceDatabase 2019-01-26 11:20:30 +03:00
Aleksey Kladov
3223de5976 move ide queries to ide db 2019-01-26 11:17:05 +03:00
Aleksey Kladov
be1a005ebd fold syntax database into files database 2019-01-26 11:09:39 +03:00
Aleksey Kladov
ba4c5021c4 list enum variants in the outline 2019-01-26 10:12:00 +03:00
Andrea Pretto
27c071f702 Fold blocks of mod items.
Fixes #572
2019-01-26 00:31:14 +01:00
Erlend Tobiassen
e28bd099d6
Support macro calls in type position 2019-01-25 23:56:31 +01:00
Aleksey Kladov
23172a116c rename POS_FIELD -> POS_FIELD_DEF
to match NAMED_FIELD_DEF
2019-01-26 00:24:12 +03:00
bors[bot]
3c7acecade Merge #656
656: :arrow_up deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 20:43:09 +00:00
bors[bot]
d0ddc5a7c1 Merge #655
655: Fix type inference of binops on int/float variables r=matklad a=flodiebold

Fixes #651.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-25 20:36:56 +00:00
Florian Diebold
5a1385007c Fix type inference of binops on int/float variables
Fixes #651.
2019-01-25 21:32:49 +01:00
Aleksey Kladov
1fd18f020d ⬆️ salsa 2019-01-25 23:27:16 +03:00
bors[bot]
d3b5ff8fe6 Merge #654
654: nicer behavior in case of bugs r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 20:20:11 +00:00
bors[bot]
03fc615ead Merge #653
653: fix re-indent r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 20:13:07 +00:00
Aleksey Kladov
54f30bb6d8 nicer behavior in case of bugs
We should always reach a fixed point, but if we fail, let's fail
loudly!
2019-01-25 23:13:07 +03:00
Aleksey Kladov
dbd28e4203 fix re-indent 2019-01-25 23:12:30 +03:00
Aleksey Kladov
27a085f79e print one size for symbols 2019-01-25 23:06:23 +03:00
Jeremy A. Kolb
7a0bc2dd64 Add docs to struct fields 2019-01-25 14:29:56 -05:00
Aleksey Kladov
f0c6a040bd remove dead code 2019-01-25 21:14:41 +03:00
Aleksey Kladov
50a7598773 print one size for symbols 2019-01-25 21:10:51 +03:00
bors[bot]
aae69bc897 Merge #647
647: fix todo r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 18:01:56 +00:00
Aleksey Kladov
d0cf4306bd fix todo 2019-01-25 20:55:38 +03:00
bors[bot]
cc73d3ccbc Merge #646
646: Add module documentation support r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-25 17:55:29 +00:00
Jeremy A. Kolb
6588579116 Add module documentation support 2019-01-25 12:51:36 -05:00
bors[bot]
daaba4be17 Merge #645
645: WIP: support goto for fields. r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 17:38:49 +00:00
Aleksey Kladov
9f2574c97e add ability to get strcut field source 2019-01-25 20:38:03 +03:00
Aleksey Kladov
0044514a4e remember where fields resolve to during inference 2019-01-25 20:02:53 +03:00
bors[bot]
bce0c6267a Merge #644
644: EnumVariant details for completion r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-25 17:02:30 +00:00
Jeremy A. Kolb
9a97c10fda EnumVariant details for completion 2019-01-25 11:50:59 -05:00
Aleksey Kladov
f6adb85b68 add gc request 2019-01-25 19:11:58 +03:00
Aleksey Kladov
046ae1d361 more stats 2019-01-25 17:25:23 +03:00
Aleksey Kladov
8d68b76ba0 better stats 2019-01-25 16:16:42 +03:00
bors[bot]
021e691997 Merge #639
639: Update salsa r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 12:34:10 +00:00
Aleksey Kladov
08c12e424d use set methods 2019-01-25 15:25:01 +03:00
Aleksey Kladov
8cf092d5de :arrow_up salsa 2019-01-25 15:16:50 +03:00
Aleksey Kladov
64d4f42558 reduce visibility 2019-01-25 14:25:30 +03:00
Aleksey Kladov
87ac5f5b36 use positional ids for fields 2019-01-25 14:21:14 +03:00
Aleksey Kladov
47e5536678 rename struct field -> struct field data 2019-01-25 12:58:01 +03:00
Aleksey Kladov
87288d802c pack enum variants into arena 2019-01-25 12:50:46 +03:00
Aleksey Kladov
2ee2fba752 switch to positional enum variants 2019-01-25 11:35:38 +03:00
bors[bot]
946aea3eb3 Merge #634
634: rename def_id -> def r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 07:32:13 +00:00
Aleksey Kladov
0707f65806 drop obsolete fixme 2019-01-25 10:31:45 +03:00
Aleksey Kladov
3b45ddd984 deglobify 2019-01-25 10:29:55 +03:00
Aleksey Kladov
74beb5bfcb simplify 2019-01-25 10:29:00 +03:00
Aleksey Kladov
ed27bd8d77 remove useless wrapper 2019-01-25 10:20:35 +03:00
Aleksey Kladov
b90b90cb95 fix comment 2019-01-25 10:17:50 +03:00
Aleksey Kladov
bc77f91cf6 rename def_id -> def 2019-01-25 10:16:28 +03:00
Aleksey Kladov
e884ab05c2 write path resolution code only once 2019-01-25 10:15:10 +03:00
bors[bot]
675943712c Merge #630
630: Fill in DocumentSymbol::detail r=matklad a=hban

Closes: #516

I just pulled type text from the syntax node and "formatted" is bit. VS Code can't really handle multi-line symbol detail (it's will crop it when rendering), so that formatting will just collapse all white-space to singe space. It isn't pretty, but maybe there's a better way.

Issue also mentions "need to be done for `NavigationTarget` to `SymbolInformation`", but `SymbolInformation` doesn't have detail field on it?

Co-authored-by: Hrvoje Ban <hban@users.noreply.github.com>
2019-01-25 07:13:16 +00:00
Aleksey Kladov
857c35ddb0 refactor import resolution
extract path resolution
use enums instead of bools
2019-01-25 10:08:21 +03:00
bors[bot]
1d4b421aad Merge #633
633: use ToOwned trait instead of inherent method r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-24 23:10:09 +00:00
Aleksey Kladov
2e354f480b use ToOwned trait instead of inherent method 2019-01-25 02:09:31 +03:00
bors[bot]
c42db0bbd7 Merge #623
623: WIP: module id is not def id r=matklad a=matklad

This achieves two things:

* makes module_tree & item_map per crate, not per source_root
* begins the refactoring to remove universal `DefId` in favor of having separate ids for each kind of `Def`. Currently, only modules get a differnt ID though. 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-24 22:56:13 +00:00
Aleksey Kladov
31d3a56b18 move adt to adt 2019-01-25 01:53:07 +03:00
Aleksey Kladov
a03c109f50 Kill DefId 2019-01-25 01:41:36 +03:00
Aleksey Kladov
1ccf73c836 kill DefKindc 2019-01-25 01:38:21 +03:00
Aleksey Kladov
ff9c5bef7b ModuleDef is Def-free 2019-01-25 01:32:47 +03:00
Aleksey Kladov
0f2f3a21e7 Migrate trait & type to new ids 2019-01-25 01:31:32 +03:00
Aleksey Kladov
00ba70a095 generalize 2019-01-25 01:05:50 +03:00
DJMcNab
107d6a0a16 Reformat 2019-01-24 22:01:49 +00:00
Aleksey Kladov
1db2cbcb8b move consts&statics to new id 2019-01-25 00:50:08 +03:00
Daniel McNab
82dfb00157
Apply suggestions from code review
Co-Authored-By: DJMcNab <36049421+DJMcNab@users.noreply.github.com>
2019-01-24 21:41:02 +00:00
Aleksey Kladov
f588535273 remove boilerplate 2019-01-25 00:32:37 +03:00
DJMcNab
f0e5a314b0 Dedupe PATH_FIRST in ATOM_EXPR_FIRST 2019-01-24 21:31:43 +00:00
DJMcNab
4899e7be76 Support universal function call syntax in function calls 2019-01-24 21:19:16 +00:00
Aleksey Kladov
90215eb5a0 generalize boilerplate 2019-01-25 00:02:18 +03:00
Aleksey Kladov
1a5f32fcb5 remove dead code 2019-01-24 23:46:48 +03:00
Aleksey Kladov
f3a37522a0 removed untyped typabledef 2019-01-24 23:39:39 +03:00
Aleksey Kladov
6a5a1f5902 adapt ide_api to the new API 2019-01-24 23:36:16 +03:00
Aleksey Kladov
4c514a3e02 move enum variant to the new API 2019-01-24 23:32:41 +03:00
Hrvoje Ban
4eff8ddb8b Fill in DocumentSymbol::detail 2019-01-24 19:05:26 +01:00
Aleksey Kladov
11dda8a0fb remove useless aliases 2019-01-24 19:29:44 +03:00
Aleksey Kladov
a7c0336a75 macro-generate froms 2019-01-24 19:16:25 +03:00
Aleksey Kladov
aea1f95a66 adapt ide_api to the new API 2019-01-24 19:04:02 +03:00
Aleksey Kladov
ce2041252a kill unused defs 2019-01-24 18:57:38 +03:00
Aleksey Kladov
566c8e321e migrate enums to new id 2019-01-24 18:56:38 +03:00
Aleksey Kladov
cefc5cbb4a introduce EnumId 2019-01-24 17:56:00 +03:00
Aleksey Kladov
60a607d33f new struct id 2019-01-24 17:54:18 +03:00
bors[bot]
abb9bfe44d Merge #627
627: Use stable toolchain r=matklad a=kjeremy

Fixes #622 

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-24 13:34:19 +00:00
Jeremy Kolb
52633b2a07 Display type when completing tuples 2019-01-24 08:25:35 -05:00
Aleksey Kladov
c57a857988 add StructId 2019-01-24 16:18:20 +03:00
Jeremy Kolb
1ebaf06f39 Use stable toolchain 2019-01-24 07:58:38 -05:00
Aleksey Kladov
2734636c53 update ide_api to new hir 2019-01-24 15:40:52 +03:00
Aleksey Kladov
1754dd9fdd remove DefKind::Function 2019-01-24 15:31:12 +03:00
Aleksey Kladov
ec7ed054e0 Functions use new id scheme 2019-01-24 15:28:50 +03:00
Aleksey Kladov
a00570d7a3 minor rename 2019-01-24 13:40:36 +03:00
Aleksey Kladov
f1959bbae0 add FunctionId 2019-01-24 13:34:41 +03:00
Aleksey Kladov
3ab1519cb2 Change ids strategy
this is a part of larghish hir refactoring which aims to

* replace per-source-root module trees with per crate trees
* switch from a monotyped DedId to type-specific ids
2019-01-24 13:29:19 +03:00
Aleksey Kladov
9fe09db771 encapsulate hir locations 2019-01-24 12:41:08 +03:00
Jeremy Kolb
f87ce73579 Add a comment 2019-01-23 20:13:36 -05:00
Jeremy A. Kolb
30f0736e64 Fix snap 2019-01-23 18:50:46 -05:00
Jeremy A. Kolb
7b548de634 Add a bunch of new documentation to completions 2019-01-23 17:46:14 -05:00
Jeremy A. Kolb
576625f0a1 Add way of getting docs from the code model and use for completion 2019-01-23 16:32:04 -05:00
Jeremy A. Kolb
6a6ce2bc95 Make EnumVariant a DocCommentsOwner 2019-01-23 16:23:21 -05:00
bors[bot]
bf9cd6ee30 Merge #617 #618
617: Use npm ci instead of install r=matklad a=h-michael

fix #422

`npm install` is always recreate `package-lock.json`.
So we might use `npm ci` with `install-code`

https://docs.npmjs.com/cli/ci.html#description

618: Add install-lsp subcommand r=matklad a=h-michael

related https://github.com/rust-analyzer/rust-analyzer/pull/617#issuecomment-456914650

Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-23 19:15:50 +00:00
Josh Robson Chase
2ffea72f74 More correct raw ident handling 2019-01-23 13:57:17 -05:00
Hirokazu Hata
0dc60e10ac Use npm ci instead of install 2019-01-24 03:23:15 +09:00
Josh Robson Chase
3b70acad01 Use IDENT for both raw and normal idents 2019-01-23 13:19:49 -05:00
Josh Robson Chase
1cd6d6539a Add raw idents to lexer and parser 2019-01-23 13:17:41 -05:00
bors[bot]
0b942cbcb0 Merge #615
615: Bumpup lsp-types to v0.55.0 r=DJMcNab a=h-michael

https://github.com/gluon-lang/lsp-types/compare/v0.54.0...v0.55.0

Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-23 17:51:28 +00:00
Hirokazu Hata
70a35379ab Fix target_selection_range type 2019-01-24 02:47:30 +09:00
Hirokazu Hata
76d52be1da Bumpup lsp-types to v0.55.0 2019-01-24 02:47:03 +09:00
Aleksey Kladov
bea75e0943 drop obsolete comment 2019-01-23 20:45:32 +03:00
Aleksey Kladov
59f830d3e8 assign DefIds when lowering 2019-01-23 19:49:11 +03:00
Aleksey Kladov
d4ed25d86f introduced better typed AstPtr 2019-01-23 18:26:02 +03:00
Aleksey Kladov
e22b6edae5 refactor 2019-01-23 18:09:45 +03:00
Aleksey Kladov
343852d8b2 simiplify 2019-01-23 17:57:41 +03:00
Aleksey Kladov
d853e9b1ef better names 2019-01-23 17:52:35 +03:00
Aleksey Kladov
7b901f86cd move SyntaxPtr to ra_syntax 2019-01-23 17:37:10 +03:00
Aleksey Kladov
71b9f06c89 don't insert parens for self methods 2019-01-23 16:21:20 +03:00
Aleksey Kladov
2dbf58c579 move completion item tests closer to the code
this is the reason why we need marks: the tests were spread across two
files, because I've forgotten that there were tests already
2019-01-23 16:05:13 +03:00
Aleksey Kladov
45da21672a generalize marking infrastructure 2019-01-23 15:36:29 +03:00
Aleksey Kladov
28661facf6 ⬆️ insta 2019-01-23 15:04:38 +03:00
gfreezy
13d2fd32ab fix completion bugs 2019-01-23 15:43:47 +08:00
bors[bot]
488326ffa7 Merge #598
598: Add function signature to CompletionItem detail r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-23 07:27:09 +00:00
Jeremy A. Kolb
a3472f8fe1 Move label from hir to ide_api 2019-01-22 18:20:40 -05:00
Aleksey Kladov
0ba7e2eaeb ad status command 2019-01-23 01:24:53 +03:00
Jeremy A. Kolb
9582a439e1 Simplify CallInfo label and documentation 2019-01-22 16:28:02 -05:00
Aleksey Kladov
7b28a15202 ⬆️ rowan 2019-01-22 23:37:03 +03:00
Erlend Tobiassen
c550c6759d
Add test for placeholder parameters in trait fn defs 2019-01-22 18:46:15 +01:00
Erlend Tobiassen
234b65fd61 Allow placeholder parameters in trait fn defs 2019-01-22 18:33:53 +01:00
Jeremy A. Kolb
070a980224 Add function signature to CompletionItem detail 2019-01-22 10:54:50 -05:00
bors[bot]
595a2f9900 Merge #593
593: Docs for completion r=matklad a=kjeremy

The first commit adds documentation support to CompletionItems.

The second one I am unsure about. Is that the right way to add docs for functions? If so should I do something similar for other `hir` types and CompletionItems?

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-22 15:06:32 +00:00
Jeremy A. Kolb
7c27e6d2b3 Update snaps 2019-01-22 09:51:29 -05:00
Jeremy Kolb
b540451483 Move docs to Function 2019-01-22 08:55:05 -05:00
bors[bot]
9e0abfc0c9 Merge #592
592: Allow types to the left of `:` in where predicates r=matklad a=regiontog

Adresses #584 

Co-authored-by: Erlend Tobiassen <erlend.tobiassen@gmail.com>
2019-01-22 13:49:33 +00:00
Erlend Tobiassen
84f888e93d No need for is_type_start 2019-01-22 14:46:06 +01:00
Erlend Tobiassen
9f3d133813 Prefer TYPE_FIRST 2019-01-22 14:36:57 +01:00
Erlend Tobiassen
8198cde13b
Update tests after allowing where predicate to accept types 2019-01-22 14:32:23 +01:00
Aleksey Kladov
cd67fb3ac1 fold macros 2019-01-22 16:26:32 +03:00
Erlend Tobiassen
2b22f5fb43 Optimistically bail out of where clause loop if not at start of a type or lifetime 2019-01-22 13:17:10 +01:00
Jeremy Kolb
b77d780f0e Thread documentation through FnSignature and CompletionItem 2019-01-21 21:42:37 -05:00
Jeremy Kolb
5d110c0ee2 Teach CompletionItem about documentation 2019-01-21 21:41:39 -05:00
Erlend Tobiassen
1aba42128f Don't leave a marker hanging without completing it. 2019-01-22 01:25:00 +01:00
Erlend Tobiassen
1059ec74e2 Allow types to the left of : in where predicates. 2019-01-22 01:11:35 +01:00
Aleksey Kladov
49596bbc2b ⬆️ insta 2019-01-22 01:28:57 +03:00
bors[bot]
5a753b39c7 Merge #590
590: Use insta for ty tests r=matklad a=flodiebold



Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-21 22:16:33 +00:00
Florian Diebold
a252110616 Use insta for ty tests 2019-01-21 22:52:35 +01:00
Florian Diebold
0cfd80422a Fix .not postfix completion 2019-01-21 22:33:30 +01:00
Florian Diebold
e45f476d56 Fix panic trying to get substs on unknown type
Fixes #585.
2019-01-21 21:42:19 +01:00
bors[bot]
237bb929f4 Merge #582
582: Postfix completion r=matklad a=gfreezy

resolved #525 

Co-authored-by: gfreezy <gfreezy@gmail.com>
2019-01-21 08:12:14 +00:00
gfreezy
5d1a63c695 postfix completion 2019-01-21 13:19:51 +08:00
gfreezy
77d9611e6b typos fix 2019-01-21 10:35:18 +08:00
bors[bot]
f133702f72 Merge #574
574: refactor completions to use TextEdit instead of InsertText r=matklad a=gfreezy

1. migrate from `insertText` to `TextEdit` from `CompleteItem`
2. use `insta` to test completions

Co-authored-by: gfreezy <gfreezy@gmail.com>
2019-01-20 18:27:23 +00:00
Aleksey Kladov
73836cdbbc extend selection expands macros and can totally panic 2019-01-20 21:05:01 +03:00
Aleksey Kladov
171f6e6d00 somewhat better name 2019-01-20 21:01:11 +03:00
Aleksey Kladov
1ec1bd8139 make matching brace consistent 2019-01-20 20:59:46 +03:00
Aleksey Kladov
c517696fab use with_db consistently 2019-01-20 20:55:08 +03:00
Florian Diebold
3c4a4c6ae9 Fix panic on inferring field access on an enum 2019-01-20 18:14:19 +01:00
gfreezy
fd8db14c2f fix tests 2019-01-20 17:28:10 +08:00
gfreezy
ecc5a2e3df workaround for trigger character 2019-01-20 13:34:16 +08:00
gfreezy
2a43638052 use a combination of source_change and text_edit for CompleteItem 2019-01-20 12:02:00 +08:00
Florian Diebold
5f3509e140 Add an assert 2019-01-19 19:00:36 +01:00
Florian Diebold
969f588025 Generics -> GenericParams 2019-01-19 18:58:04 +01:00
gfreezy
94d96b60f3 refactor to use remove_range and replace_range instead of TextEdit 2019-01-20 00:38:34 +08:00
Florian Diebold
9e4b5ecec4 Make generics work in struct patterns 2019-01-19 16:02:06 +01:00
Florian Diebold
d37bb128ef Collect generic args in struct variant paths as well 2019-01-19 16:02:06 +01:00
Florian Diebold
cc4562ab6e Collect generic args in type paths
E.g. `let x: A<X>` is handled correctly.
2019-01-19 16:02:06 +01:00
Florian Diebold
fa7f9d696f Make Module impl methods crate-private, update some comments 2019-01-19 16:02:06 +01:00
Florian Diebold
5862542ded Add AST/HIR for type args in path segments 2019-01-19 16:02:06 +01:00
Florian Diebold
688a45e00b Implement beginnings of generics
- add HIR for generic params
 - resolve generic params in type paths
 - add substitions for ADTs
 - insert type variables for substitutions
2019-01-19 16:02:06 +01:00
Florian Diebold
415cdc5210 Add some tests 2019-01-19 15:49:48 +01:00
gfreezy
64342599ca ignore unused methods 2019-01-19 22:11:38 +08:00
gfreezy
d08e81cdd8 refactor completions to use TextEdit instead of InsertText 2019-01-19 22:02:50 +08:00
Florian Diebold
573f6f8656 Refactor/simplify path resolution 2019-01-19 14:48:07 +01:00
Marcus Klaas de Vries
fa43ef30f4 Change parsing of struct field patterns 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
bcbfa2cc11 Finish move of StructField for pattern type inference 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
4277f420aa Replace Expectation by &Ty in infer_pat method 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
f9a6050034 Move parsing of field pattern lists to the parser (where it belongs) 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
d2769837f1 Move pattern type inference from adt::StructField to core_model_impl (WIP) 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
b5466f3fb3 Address issues flagged in review 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
5027c5d4ee Fix bug in match arm type unification 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
44e9a9605b Fixup annotated bindings 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
d48d5b8b6c Add initial (flawed) implementation of binding annotations 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
9433a108cf Make pattern inference work w/o proper expecations 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
be1b4034a5 Infer pattern types for lambdas and loops 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
06d16a18f6 Implement match binding type inference and arm unification 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
ac216880f5 Implement unlabeled struct field pattern inference 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
3340807bd2 Get basic struct pattern type inference working! 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
ab5deb7811 Create struct patterns up to the hir level 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
9c2d83a4c8 Add crude implementation of tuplestruct pattern inference 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
3b0de53904 Work on type inference for ADT patterns 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
5648dcd36e Implement type inference for tuples and refs 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
afaa26636e Add additional pattern variants 2019-01-19 15:37:25 +03:00
Aleksey Kladov
e13c9188fe fix the test 2019-01-19 15:37:25 +03:00
Aleksey Kladov
63f7dadc11 rename LoweredImport -> ImportId 2019-01-19 15:37:25 +03:00
Aleksey Kladov
c0aeb5204c switched to lowerd module 2019-01-19 15:37:25 +03:00
Aleksey Kladov
b93c6bc557 simplify 2019-01-19 15:37:25 +03:00
Aleksey Kladov
789772e8e5 move input module items to the lower module 2019-01-19 15:37:25 +03:00
gfreezy
99e8499957 more idiomatic code 2019-01-19 15:36:58 +03:00
gfreezy
360167db16 prefer inline tests 2019-01-19 15:36:58 +03:00
gfreezy
6ab6d1eaa0 fix comments 2019-01-19 15:36:58 +03:00
gfreezy
5c8cb56506 move rename to a new mod 2019-01-19 15:36:58 +03:00
gfreezy
bc0f79f74a rename mod 2019-01-19 15:36:58 +03:00
Aleksey Kladov
b82fe73d1a make token set a const-fn 2019-01-19 15:36:58 +03:00
Aleksey Kladov
b028472481 ⬆️ update rust 2019-01-19 15:36:58 +03:00
Aleksey Kladov
a2ca03d10b ⬆️ salsa 2019-01-17 14:11:00 +03:00
Hirokazu Hata
0aedd4fb2f Add Ty::Array to walk_mut 2019-01-17 00:08:53 +09:00
Hirokazu Hata
f66ca1bd2e Fix test case invalid syntax 2019-01-16 23:39:14 +09:00
Hirokazu Hata
5c570fa770 Remove unneeded code 2019-01-16 23:39:14 +09:00
Hirokazu Hata
478ce1c8b5 Fix infer array test 2019-01-16 23:37:42 +09:00
Hirokazu Hata
5d3884d5b4 Fix Ty::Array 2019-01-16 23:37:42 +09:00
Hirokazu Hata
2a3262c757 Add infer array test 2019-01-16 23:35:06 +09:00
Hirokazu Hata
d665acbbec Implement array inference 2019-01-16 23:35:06 +09:00
Hirokazu Hata
4729a1b054 Update ARRAY_EXPR grammar 2019-01-16 23:22:14 +09:00
bors[bot]
d75a0368f5 Merge #536
536: Introduce variable semicolon block expr r=matklad a=yerke

Fix for https://github.com/rust-analyzer/rust-analyzer/issues/504

Feels a bit hacky...

Co-authored-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
2019-01-16 06:20:09 +00:00
Yerkebulan Tulibergenov
67ddd33598 don't need SEMI any more 2019-01-15 20:29:37 -08:00
Yerkebulan Tulibergenov
de7c0f814c delete unused fn 2019-01-15 20:28:01 -08:00
Yerkebulan Tulibergenov
4dd7ec94bc use has_semi 2019-01-15 20:27:15 -08:00
Yerkebulan Tulibergenov
5e35f191fc add has_semi to ExprStmt 2019-01-15 20:26:46 -08:00
Marcus Klaas de Vries
a2b6d3da30 Implement rudimentary type inference for unary operators 2019-01-16 00:04:39 +01:00
Aleksey Kladov
8338acfd3a kill last cancelables 2019-01-15 21:17:10 +03:00
Aleksey Kladov
0bb170a277 remove Canceled from impl of ra_ide_api 2019-01-15 21:09:51 +03:00
Aleksey Kladov
05ba45c667 remove Canceled from API impl 2019-01-15 21:02:42 +03:00
Aleksey Kladov
02c3d2f78e hir is cancelation free 2019-01-15 20:56:06 +03:00
Aleksey Kladov
8ba9c2d4ce remove Cancelable from type inference 2019-01-15 20:54:18 +03:00
Aleksey Kladov
b871062e32 remove Cancelable from Ty 2019-01-15 20:43:37 +03:00
Aleksey Kladov
fafcd103d2 remove Cancelable from ids 2019-01-15 19:18:52 +03:00
Aleksey Kladov
490112dea1 remove Cancelable from nameres 2019-01-15 19:15:01 +03:00
Aleksey Kladov
18e9a710cd remove Cancelable from fn_scopes 2019-01-15 19:04:49 +03:00
Aleksey Kladov
040a622c52 remove Cancelable from funciton body 2019-01-15 19:01:59 +03:00
Aleksey Kladov
f1367e0370 remove Cancelable from navigation target 2019-01-15 18:50:16 +03:00
Aleksey Kladov
9dd4099d93 remove Cancelable from static&const API 2019-01-15 18:45:01 +03:00
Aleksey Kladov
9446be2999 remove Cancelable from adt API 2019-01-15 18:43:25 +03:00
Aleksey Kladov
8af9a18660 remove Cancelable from Crate API 2019-01-15 18:33:26 +03:00
Aleksey Kladov
c159e414b4 remove Cancelable from Module API, part 2 2019-01-15 18:30:58 +03:00
Aleksey Kladov
ca52cf1ecd remove Cancelable from Module API 2019-01-15 18:26:29 +03:00
Aleksey Kladov
fb012e5c1e remove cancelable from symbols 2019-01-15 18:19:09 +03:00
Aleksey Kladov
11f3c8afb2 remove Cancelable from source binders 2019-01-15 18:13:49 +03:00
Aleksey Kladov
68ff52566d remove Cancelable from module_tree_query 2019-01-15 17:55:15 +03:00
Aleksey Kladov
fedd320cf2 check_canceled does not return Result 2019-01-15 15:45:48 +03:00
Aleksey Kladov
dd45697e53 update salsa 2019-01-15 15:06:45 +03:00
bors[bot]
f6f2e89e7a Merge #546
546: replace `assert_dbg_eq` with Insta r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-15 11:18:56 +00:00
Aleksey Kladov
d79a9b17dc switch to insta for testing 2019-01-15 14:18:24 +03:00
Yerkebulan Tulibergenov
4149285bf5 add semi only if it wasn't present before or after 2019-01-15 01:21:04 -08:00
bors[bot]
e8e82ce032 Merge #485
485: Add type inference for a bunch of primitives r=flodiebold a=marcusklaas

This PR adds inference for `&str`, `&[u8]`, `char`, `bool`, floats and integers. For floats and integers it uses type variables to infer the exact type, i.e. `u32`, from context when it's not annotated explicitly.

I'm not quite happy with the implementation yet, but I think it mostly works now.

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-14 20:58:20 +00:00
Marcus Klaas de Vries
37ba237e66 Address issues found in review 2019-01-14 21:52:08 +01:00
Marcus Klaas de Vries
d67eabb512 Fix type inference for raw (byte) strings 2019-01-14 20:56:14 +01:00
Marcus Klaas de Vries
2689348772 Give literal expression default values for now 2019-01-14 19:46:10 +01:00
Marcus Klaas de Vries
a9a6a50c75 Fixup tests 2019-01-14 19:30:21 +01:00
Aleksey Kladov
db43b44f71 update cargo_metadata 2019-01-14 16:15:25 +03:00
Marcus Klaas de Vries
606d66a714 Start moving literal interpretation to the AST (WIP) 2019-01-14 13:56:43 +01:00
Marcus Klaas de Vries
81bc8e4973 don't try to treat arrays and tuples as literals 2019-01-14 13:55:49 +01:00
Marcus Klaas de Vries
1574715be5 Use type variables to determine exact type for ambiguous numeric literals 2019-01-14 13:54:31 +01:00
Marcus Klaas de Vries
5f5dc20d85 Try implementing integer type inference (WIP) 2019-01-14 13:52:57 +01:00
Marcus Klaas de Vries
a6146d35b1 Implement type inference for literals (WIP) 2019-01-14 13:52:55 +01:00
Aleksey Kladov
7e5ab9b78c switch to lsp-types 2019-01-14 14:32:03 +03:00
Yerkebulan Tulibergenov
5d6cf59f60 add semicolon for block expr in introduce_variable 2019-01-13 18:22:53 -08:00
Yerkebulan Tulibergenov
1538ca3ae5 we don't need to write var_name after block expr? 2019-01-13 18:12:01 -08:00
Yerkebulan Tulibergenov
a996b66cc6 add failing test test_introduce_var_block_expr_second_to_last 2019-01-13 17:59:56 -08:00
Jeremy Kolb
da326dca60 Remove duplication 2019-01-13 20:25:14 -05:00
Jeremy Kolb
2d7b4cc548 Add visibility to hover 2019-01-13 20:08:33 -05:00
Aleksey Kladov
5498a202b6 target_selection_range is not nullable in the implementation 2019-01-13 22:42:42 +03:00
bors[bot]
fa6e4b7978 Merge #532
532: fix go to parent module r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 19:01:06 +00:00
Aleksey Kladov
077a02271c fix go to parent module 2019-01-13 21:56:20 +03:00
Pascal Hertleif
f97a9921df Fix some random typos 2019-01-13 19:54:28 +01:00
Aleksey Kladov
eedc08300c goto defenition works for type-inferred methods 2019-01-13 18:56:57 +03:00
Aleksey Kladov
884ce4a420 fix indent caclulation 2019-01-13 18:21:23 +03:00
bors[bot]
ff09d15124 Merge #520
520: Imprement tuple inference r=flodiebold a=h-michael

related #394

I'm sorry I'm late.

I try implementing array inference next.

Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-13 13:25:33 +00:00
Hirokazu Hata
139da0841d Fix tuple test case 2019-01-13 22:23:06 +09:00
Pascal Hertleif
7f16f922da
Tweak message shown for query fallback
Small tweak for #518
2019-01-13 13:32:52 +01:00
Hirokazu Hata
6e73cc89b6 Implement tuple inference 2019-01-13 21:10:01 +09:00
Hirokazu Hata
6efda8f6ce Update TUPLE_EXPR grammar 2019-01-13 21:04:03 +09:00
Hirokazu Hata
829f668bd7 Add infer tuple test 2019-01-13 21:04:03 +09:00
bors[bot]
0199572a3d Merge #517 #518
517: gracefully handle cycles in crate graph r=matklad a=matklad



518: Add an explanatory message when we use the Query fallback r=matklad a=DJMcNab

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/269.

There is no good way to explain it for go_to_def, so I've just fallen back on to_vec.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-13 10:41:47 +00:00
Aleksey Kladov
77f67ca7e2 gracefully handle cycles in crate graph
rust-lang/rust has absolutely weird setup with rustc-workspace-shim,
which leads to real cycles.
2019-01-13 13:39:48 +03:00
bors[bot]
ff3d91bb0c Merge #519
519: support ref-patterns r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 10:36:30 +00:00
Aleksey Kladov
8e554ea5fa support ref-patterns 2019-01-13 13:36:06 +03:00
DJMcNab
a53c5de1fd Add an explanatory message when we use the Query fallback 2019-01-13 10:31:37 +00:00
bors[bot]
a2659abed8 Merge #513
513: Add bench runnable and code lens r=matklad a=kjeremy



Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-13 07:59:26 +00:00
Jeremy Kolb
ecf9c203ed Fix typos 2019-01-12 20:40:30 -05:00
Jeremy Kolb
5d273f10cd Add bench runnable and code lens 2019-01-12 18:40:54 -05:00
bors[bot]
eb931c0d9e Merge #505
505: Inherent methods r=matklad a=flodiebold

This adds resolution, type checking and completion for inherent methods.

The main open question here is the caching, I think. I'm not sure whether we should be caching method resolutions in a more fine grained way (currently we just build a hash map of types -> impl blocks, and iterate through all potential impl blocks when looking for a method).

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-12 21:18:14 +00:00
Florian Diebold
1ed7fbfc1b args -> params 2019-01-12 21:58:16 +01:00
Florian Diebold
5db5f5cc1d Small improvements from review comments 2019-01-12 21:51:56 +01:00
bors[bot]
e56072bfa3 Merge #500
500: Code lens support for running tests r=matklad a=kjeremy

Supports running individual and mod tests.

I feel like this kind of abuses the `Runnables` infrastructure but it works. Maybe later on down the line we should introduce a struct that is really just a tuple of binary, arguments, and environment and pass that back to the client instead. `run_single.ts` is just a paired down version of `runnables.ts` and there is duplication because I think run_single will probably change independent of runnables.

Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-12 18:56:11 +00:00
Jeremy Kolb
72d48b08fb Move CargoTargetSpec and friends to cargo_target_spec module 2019-01-12 13:00:58 -05:00
bors[bot]
8033c81acc Merge #507
507: Fix handling of attributes in positional field lists r=matklad a=DJMcNab

First reported by @max-frai. This allows us to properly handle crates using e.g. `#[Derive(fail)]` with `#[fail(cause)]`, among other cases.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-12 15:47:48 +00:00
DJMcNab
0b9e462ab0 Fix handling of attributes in positional field lists 2019-01-12 15:42:12 +00:00
DJMcNab
c38432c0bd Use --force when installing the VSIX. 2019-01-12 15:00:03 +00:00
Florian Diebold
d0bdaa6c00 Complete inherent methods 2019-01-12 15:01:27 +01:00
Florian Diebold
082ef52bcb Implement basic inherent method resolution 2019-01-12 15:01:19 +01:00
Jeremy Kolb
f42f70b1d5 Switch hover to use MarkupContent
MarkedString is deprecated
2019-01-11 21:45:16 -05:00
Florian Diebold
1212e59bee Fix assertion error in unification (hopefully)
Currently, all types that we handle during inference need to be resolved as far
as possible at the time. It's maybe too brittle of an invariant; I need to think
how we can do this better. This should fix #484 though, I hope (if
it's the same case as I managed to reproduce).
2019-01-11 22:59:00 +01:00
Jeremy A. Kolb
faf0037635 Code lens support for running tests 2019-01-11 15:16:55 -05:00
Aleksey Kladov
f60153ee9e warn louder on mising sysroot 2019-01-11 20:55:56 +02:00
Aleksey Kladov
f193fbcbae actually produce missing def kinds 2019-01-11 21:02:12 +03:00
Aleksey Kladov
19136cde00 uncopypaste def sources 2019-01-11 20:43:10 +03:00
Aleksey Kladov
0f9c350812 add missing def kinds 2019-01-11 20:28:10 +03:00
Aleksey Kladov
2d3940d0ab rename TreePtr -> TreeArc
This is much clearer about the semantics
2019-01-11 19:59:06 +03:00
bors[bot]
aad1bf877e Merge #496
496: Include two element ranges into the nav. r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-11 15:35:41 +00:00
Aleksey Kladov
f23a13bfa7 kill NavTarget ptr 2019-01-11 18:35:04 +03:00
Aleksey Kladov
dda916bc4d fix tests 2019-01-11 18:32:22 +03:00
Aleksey Kladov
4089db1e0d prioritize event handing over indexing
If we index gazillion libraries simultaneously, we fill the threadpool
and so the main loop fails to turn, although there isn't really any
significant blocking inside the loop itself.
2019-01-11 17:08:49 +03:00
Aleksey Kladov
8a5f74a24f use location link in goto def 2019-01-11 16:06:22 +03:00
Aleksey Kladov
3aaf20bd6e return ref ranges from gotodef 2019-01-11 16:06:08 +03:00
Aleksey Kladov
f9ed8d4d23 envapsulate navigation target better 2019-01-11 16:01:57 +03:00
Aleksey Kladov
1d3d05d5d7 simplify 2019-01-11 16:01:57 +03:00
Aleksey Kladov
a5dd04078e reshuffle nones 2019-01-11 16:01:57 +03:00
Aleksey Kladov
7b14377965 refactor nav target 2019-01-11 16:01:57 +03:00
Aleksey Kladov
df6bbc6e42 Make from_syntax private 2019-01-11 16:01:57 +03:00
Aleksey Kladov
2aa125251e move nav to a separate file 2019-01-11 16:01:57 +03:00
Aleksey Kladov
f848aa97ab group feature modules 2019-01-11 16:01:57 +03:00
Aleksey Kladov
a1b661faec fine grained on typed tests 2019-01-11 15:48:06 +03:00
Aleksey Kladov
d9e70e3160 fix on-type offset 2019-01-11 15:05:40 +03:00
Aleksey Kladov
4aa632761f make on dot typed actually work 2019-01-11 14:57:19 +03:00
Aleksey Kladov
66d7adf1cb force serde in ra_syntax 2019-01-11 13:21:18 +03:00
Aleksey Kladov
4bf6b91b9d minor 2019-01-11 00:51:34 +03:00
Aleksey Kladov
cd00158b1d wire sysroot into crate graph 2019-01-11 00:51:34 +03:00
Aleksey Kladov
e35374ec7c special case std 2019-01-11 00:51:34 +03:00
Aleksey Kladov
8852408bfb use arena for sysroot 2019-01-11 00:51:34 +03:00
Aleksey Kladov
66fba88534 split module 2019-01-11 00:51:34 +03:00
Aleksey Kladov
e8923713c5 add sysroot boilerplate 2019-01-11 00:51:34 +03:00
bors[bot]
b6bc55f542 Merge #490
490: dont depend on tools from lsp-server r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-10 21:46:56 +00:00
Aleksey Kladov
4196b65f21 dont depend on tools from lsp-server 2019-01-11 00:46:32 +03:00
Florian Diebold
a6590ce231 Use name resolution for goto definition 2019-01-10 21:32:54 +01:00
bors[bot]
dc2a8d5acc Merge #470
470: Type inference for enum variants r=flodiebold a=marcusklaas

Opened a new PR instead of https://github.com/rust-analyzer/rust-analyzer/pull/461. Totally botched that one.

I think I resolved all the issues mentioned there.

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-10 19:12:40 +00:00
bors[bot]
a95536301c Merge #488
488: switch CargoWorkspace to arena r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-10 18:59:40 +00:00
Aleksey Kladov
faa1d35cbc dont complete () if they are already there 2019-01-10 21:38:04 +03:00
Aleksey Kladov
cbeaa541aa switch CargoWorkspace to arena 2019-01-10 21:26:43 +03:00
DJMcNab
afdb569902 Fix handling of where clauses in tuple structs 2019-01-10 18:21:01 +00:00
Aleksey Kladov
f83485839b better change visibility assist
* don't add visibility before #derive
* suggest changing pub(crate) into pub
2019-01-10 19:18:15 +03:00
bors[bot]
acd90bc33b Merge #482
482: fix code duplication r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-10 15:32:34 +00:00
Aleksey Kladov
a0c978cd0c fix code duplication 2019-01-10 18:32:02 +03:00
Aleksey Kladov
3ca76c2039 move join_lines to a separate module 2019-01-10 17:50:49 +03:00
Aleksey Kladov
32fa084c07 introduce marking infrastructure for maintainable tests
This also fixes a particular edge case in name resolution.
2019-01-10 16:45:09 +03:00
Marcus Klaas de Vries
e78286c8e8 Save variant names in EnumData to reduce needless queries
We already have their names when anyway, and when in all (current)
situations where we're interested in an Enum's variants, we want
their names.
2019-01-10 14:43:01 +01:00
Marcus Klaas de Vries
978de5cf8b Implement type inference for enum variants 2019-01-10 14:32:56 +01:00