Commit Graph

1924 Commits

Author SHA1 Message Date
Aleksey Kladov
ad80a0c551 preserve token spacing 2019-01-31 22:23:30 +02:00
Aleksey Kladov
5934738854 first test sort-of passes 2019-01-31 22:23:30 +02:00
Aleksey Kladov
be03aa5ee7 extract tt cursor 2019-01-31 22:23:30 +02:00
Aleksey Kladov
8d5a8f085c binders boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
2def5b4e6f more expand boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
d2a1e07150 more expand boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
09a8d75351 expand boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
2d88207853 reshuffle 2019-01-31 22:23:30 +02:00
Aleksey Kladov
ce3636798b move macros to a separate crate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
9a043a163c parses simple macro 2019-01-31 22:23:30 +02:00
Aleksey Kladov
0d9210e9bc handle multibyte tokens 2019-01-31 22:23:30 +02:00
Aleksey Kladov
f3489e8111 add eat methods 2019-01-31 22:23:30 +02:00
Aleksey Kladov
e28a5e048a parsing scaffold 2019-01-31 22:23:30 +02:00
Aleksey Kladov
2980508ad2 debug impls 2019-01-31 22:23:30 +02:00
Aleksey Kladov
82cf0185c3 add repeats to ast 2019-01-31 22:23:30 +02:00
Aleksey Kladov
3bd4560d6e convert punts and literals 2019-01-31 22:23:30 +02:00
Aleksey Kladov
c09c6fc97c start tt convertions boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
a4342a7fee add conversion boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
ca327f35ad add macro by example ide 2019-01-31 22:23:30 +02:00
Aleksey Kladov
6846ac2a16 shorten name :-) 2019-01-31 22:23:30 +02:00
Aleksey Kladov
b8f56f89c6 start token tree module 2019-01-31 22:23:30 +02:00
bors[bot]
1bf47d43db Merge #715
715: Use "▶" for test code lens r=matklad a=kjeremy

I find that this makes code lenses stand out more otherwise they can be easy to miss.

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-31 13:04:03 +00:00
Jeremy Kolb
76c0d0b94d format 2019-01-31 07:44:26 -05:00
bors[bot]
97ade89993 Merge #692
692: [WIP] Correctly parse attributes  r=matklad a=DJMcNab

Reference - https://doc.rust-lang.org/reference/attributes.html
This fixes/investigates inner attributes for:

- [x] `impl` blocks
- [x] `extern` blocks
- [x] `fn`s (fixes #689)
- [x] `mod`s (already supported)
- [x] 'block expressions' (the long text just describes all 'blocks' used as statements)

This also investigates/fixes outer attributes for:

- [ ] 'most statements' (see also: #685, https://doc.rust-lang.org/reference/expressions.html#expression-attributes)
- [x] Enum variants, Struct and Union fields (Fixed in #507)
- [ ] 'Match expression arms' (@matklad can you provide a test case which explains what this means?)
- [ ] 'Generic lifetime or type parameters'
- [ ] 'Elements of array expressions, tuple expressions, call expressions, tuple-style struct and enum variant expressions'
- [ ] 'The tail expression of block expressions'

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-31 07:06:31 +00:00
bors[bot]
777c79ce6b Merge #712
712:  Fix #667 and improvements to introduce_variable r=matklad a=eulerdisk

Fix #667 (but not re-indenting currently), plus many other improvements.
@matklad I'm not sure how to handle re-indenting here.

Co-authored-by: Andrea Pretto <eulerdisk@gmail.com>
2019-01-31 07:00:11 +00:00
Jeremy Kolb
57899d66fa Use "▶" for test code lens
I find that this makes code lenses stand out more.
2019-01-30 22:09:27 -05:00
Andrea Pretto
a5fe4a08fb Some improvements to introduce_variable. 2019-01-30 23:01:01 +01:00
bors[bot]
28fdb8d03c Merge #701
701: Minor type inference tweaks r=flodiebold a=marcusklaas

Pass down expectation for reference expressions and type the guard in match expressions.

I wasn't able to add a test for the former addition because the type variable previously introduced would always resolve to the right type in the things I tried!

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-30 20:51:47 +00:00
Florian Diebold
1acff307fe Move expr_scopes query to its module 2019-01-30 21:39:34 +01:00
Andrea Pretto
7a1494ced5 Fix #667 2019-01-30 21:31:29 +01:00
Florian Diebold
65864d85f9 Rename FnScopes -> ExprScopes
The reason for this is that it describes scopes for any body expression, not
just that of a function. It did not actually refer to functions at all anymore.
2019-01-30 21:23:50 +01:00
Marcus Klaas de Vries
13cb4a1b37 Add test for passing on ref expectations 2019-01-30 21:14:26 +01:00
Aleksey Kladov
ef7eb8c257 Use Crate instead of CrateId 2019-01-30 22:37:20 +03:00
Aleksey Kladov
95aa7e46fc move item_map_query 2019-01-30 22:36:22 +03:00
bors[bot]
b704ce803b Merge #702
702: Go to Implementation r=matklad a=kjeremy

First half of #620

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-01-30 19:19:31 +00:00
kjeremy
04eb15856b Resolve crate 2019-01-30 13:18:21 -05:00
Jeremy Kolb
b88ba007cc Pass Documentation up to LSP and add "rust" to our codeblocks there 2019-01-29 21:39:09 -05:00
Jeremy Kolb
3c17643b30 Go to Implementation for structs and enums 2019-01-29 19:13:02 -05:00
Marcus Klaas de Vries
3daca3eb4d Infer type of match guard 2019-01-28 23:09:14 +01:00
DJMcNab
00e6b5d26c Parse and validate attributes in blocks 2019-01-28 20:03:56 +00:00
WizardOfMenlo
ec32b2e39c Use match-all instead of individual branches 2019-01-28 17:17:04 +00:00
WizardOfMenlo
9416904d14 Added support for primitive types type inference when using std::ops::Not 2019-01-28 14:52:43 +00:00
Aleksey Kladov
2ee08098a6 opt-in jemalloc 2019-01-28 15:52:21 +03:00
Aleksey Kladov
d1a67c1174 align command naming 2019-01-28 15:01:22 +03:00
bors[bot]
7abe1f422c Merge #678
678: WIP: automatically collect garbage r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-28 11:39:02 +00:00
Aleksey Kladov
53e3e82d91 update salsa 2019-01-28 13:53:32 +03:00
Florian Diebold
cf5c99271d Sort completions in tests 2019-01-27 22:51:20 +01:00
Aleksey Kladov
c4ceea3417 use salsa from my repo 2019-01-27 22:57:18 +03:00
Aleksey Kladov
b4c8baadb1 tweak words 2019-01-27 22:57:18 +03:00
Aleksey Kladov
c7f4e3a401 show jemalloc 2019-01-27 22:57:18 +03:00
Aleksey Kladov
09b5dc8e02 drop obsolete comment 2019-01-27 22:57:18 +03:00
Aleksey Kladov
7801f6b50f automatically collect garbage 2019-01-27 22:57:18 +03:00
Marcus Klaas de Vries
6249989e6c Process second review 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
f6eb44cd9e Use type information from the turbofish 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
0da1e8b2f8 Add a FnSig to Ty::FnDef 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
089b1c57c1 Address some issues flagged in review 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
04748a0f16 Add missing ty test snapshot 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
aa06893a14 Add type params to FnSignature 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
67e40e431a Initial implementation of generics for method calls 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
3bd47c0285 First attempt at generic type inference for fns 2019-01-27 17:59:21 +01:00
bors[bot]
3f4f50baaa Merge #690
690: Fix module resolution for non standard filenames r=matklad a=regiontog

fixes #668

Co-authored-by: Erlend Tobiassen <erlend.tobiassen@gmail.com>
2019-01-27 15:55:47 +00:00
Erlend Tobiassen
b775fa285c
Revert parts of "Test non standard crate root"
Prefer cursor position over file_map
2019-01-27 16:32:31 +01:00
DJMcNab
137b1ccb71 Add a test for inner attributes on extern blocks 2019-01-27 15:20:36 +00:00
bors[bot]
b2b62b9579 Merge #691
691: remove dead code r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-27 15:08:23 +00:00
Aleksey Kladov
154bce1864 remove dead code 2019-01-27 18:07:45 +03:00
DJMcNab
73b075c556 Correctly parse inner attributes of impl blocks 2019-01-27 14:55:03 +00:00
Erlend Tobiassen
b149882d19
Remove dbg!(...) 2019-01-27 15:44:59 +01:00
Erlend Tobiassen
08e12f974c
Fix bad rebase and rustfmt 2019-01-27 15:37:43 +01:00
Erlend Tobiassen
e2e1f4ceca
Typos 2019-01-27 15:19:42 +01:00
Erlend Tobiassen
5052bf9889
Update test to use correct paths 2019-01-27 15:19:41 +01:00
Erlend Tobiassen
c5e6db16b1
fix #668 2019-01-27 15:19:38 +01:00
Erlend Tobiassen
683e5e64f4
Test non standard crate root 2019-01-27 15:15:56 +01:00
bors[bot]
964086e0d4 Merge #685
685: Support attributes on let statements r=matklad a=DJMcNab

Fix #677.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-27 09:04:02 +00:00
DJMcNab
4d35cc3875 Stop using let_stmt twice 2019-01-27 09:00:57 +00:00
bors[bot]
ffcf618842 Merge #662
662: Preserve indentation in doc comments r=matklad a=kjeremy

Fixes #502 

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-27 08:21:04 +00:00
bors[bot]
2577a65684 Merge #687
687: fix verificatio on ci r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-26 23:35:49 +00:00
Aleksey Kladov
7177fffd7b fix verification on CI
remove `--verify` flag from the binaries: we have tests for this!
2019-01-27 02:30:54 +03:00
Florian Diebold
94bbb2418a Add marks 2019-01-26 23:59:11 +01:00
Florian Diebold
77f92674f9 Handle cycles in type vars
This might be the cause of #587.
2019-01-26 23:48:01 +01:00
DJMcNab
7055d43c3a Make attrs be a child of the let statement 2019-01-26 22:02:23 +00:00
bors[bot]
e40d8d4032 Merge #683
683: fix AST for if expressions r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-26 21:41:27 +00:00
Aleksey Kladov
619af1e22c fix AST for if expressions
then is not always a block...
2019-01-27 00:37:11 +03:00
DJMcNab
55a3e21ac4 Support attributes on let statements 2019-01-26 21:35:03 +00:00
Aleksey Kladov
f78b092629 fix panic in call info
closes #317
closes #675
2019-01-27 00:34:18 +03:00
bors[bot]
691ffd2dcb Merge #681
681: Use the correct working directory for cargo metadata and rustfmt r=matklad a=DJMcNab

Fixes maybe #670. @bjorn3, is that true?

(Awkward wording due to GitHub's eager 'fixes' finding)

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-26 21:18:52 +00:00
DJMcNab
9fbbb8f609 Don't use the reserved error code 2019-01-26 20:58:50 +00:00
DJMcNab
d9456c3989 Return an lsp error 2019-01-26 20:43:51 +00:00
Aleksey Kladov
a128075af9 remove Option<SourceFileItemId> hack 2019-01-26 23:27:01 +03:00
DJMcNab
632b0f2902 Use the correct working directory for cargo metadata and rustfmt 2019-01-26 20:16:15 +00:00
Aleksey Kladov
9c1a18a626 store syntax ptr in FileItems
we cache the tree in file_item query anyway
2019-01-26 22:48:04 +03:00
Aleksey Kladov
ae97a45c35 remove dead code 2019-01-26 22:43:07 +03:00
bors[bot]
2d337c88b0 Merge #680
680: Struct literals should not be a `BlockLike::Block` r=DJMcNab a=DJMcNab

Fix #674.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-26 19:17:48 +00:00
DJMcNab
7a76433c45 Struct literals should not be a BlockLike::Block 2019-01-26 18:45:29 +00:00
Aleksey Kladov
a1fb8efd7a ⬆️ salsa 2019-01-26 21:23:59 +03:00
Aleksey Kladov
6f862a6704 ⬆️ rowan
The new rowan uses arena allocator for red nodes which helps
slightly (5% on std completion test) with performance but should help
quite a bit with avoiding memory fragmentation.
2019-01-26 19:39:31 +03:00
Jeremy Kolb
a892067951 Make doc comments optional 2019-01-26 10:35:23 -05:00
bors[bot]
a8d32c4d1a Merge #671
671: Makre VFS slightly less super obscure r=vemoo a=matklad

I've decided to better understand what we do in VFS, and this turns out to be really hard. Jugling threads and channels is one of the most unfortunately arcane bits of rust...

I had some success though by flattenning the structure so that all channel & thread creation routines are on one screen. 

r? @vemoo 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-26 15:13:44 +00:00
Jeremy Kolb
e9e0ea0398 Do not unconditionally trim comments 2019-01-26 09:55:30 -05:00
Jeremy Kolb
8c08b6825e Preserve indentation in doc comments 2019-01-26 09:50:17 -05:00
Aleksey Kladov
9f16892b94 remove watcher ctx 2019-01-26 17:17:28 +03:00
Aleksey Kladov
bf98fc609e remove mutexes 2019-01-26 17:04:00 +03:00
Aleksey Kladov
012ea3fac6 handle all the reads on the "main" watcher thread 2019-01-26 17:01:58 +03:00
Aleksey Kladov
3ce531f95d cleanup: add result alias 2019-01-26 16:40:24 +03:00
Aleksey Kladov
390a20787e consolidate error handling 2019-01-26 16:28:04 +03:00
Aleksey Kladov
20d7a431fd refactor-fvs 2019-01-26 16:28:04 +03:00
Aleksey Kladov
bf7a0f43d0 minor cleanups 2019-01-26 16:26:30 +03:00
bors[bot]
3feaf2a008 Merge #659
659: Fold blocks of mod items r=matklad a=eulerdisk

Fixes #572

As requested, we ignore `mod`s with a visibility specifier.

Co-authored-by: Andrea Pretto <eulerdisk@gmail.com>
2019-01-26 12:49:08 +00:00
Aleksey Kladov
07a4b9f1a0 dont overwrite memfies 2019-01-26 15:41:52 +03:00
Andrea Pretto
b9ca8ab868 Better visibility check. 2019-01-26 13:32:48 +01:00
bors[bot]
2acaa92c93 Merge #660
660: Support macro calls in type position r=matklad a=regiontog

A [playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fdc6dd4ddaece92a72fa2a292b75e27c) demonstrating the syntax in question.

Co-authored-by: Erlend Tobiassen <erlend.tobiassen@gmail.com>
2019-01-26 10:23:28 +00:00
bors[bot]
8b6dea348f Merge #666
666: rename source_file -> parse r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-26 08:55:38 +00:00
Aleksey Kladov
9457b1f0e6 rename source_file -> parse 2019-01-26 11:51:36 +03:00
Bernardo
410a3ae6e8 use entry file_type, improve test 2019-01-26 11:46:37 +03:00
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