Commit Graph

1698 Commits

Author SHA1 Message Date
Aleksey Kladov
b73c51ff9b wrap TreePtr 2019-01-08 11:20:15 +03:00
Aleksey Kladov
5618c8ade1 regenerate 2019-01-08 11:20:15 +03:00
Aleksey Kladov
d91a98ec84 switch ra_syntax to new rowan API 2019-01-08 11:20:15 +03:00
Aleksey Kladov
55272f2023 update rowan 2019-01-08 11:20:15 +03:00
Marcus Klaas de Vries
e51d44a2de Process explicit type hints for str, bool and char 2019-01-07 20:43:41 +01:00
Marcus Klaas de Vries
5d15dd70b0 Tidy up binary operator type inference; add test file 2019-01-07 20:39:23 +01:00
Marcus Klaas de Vries
7b0eaef580 Implement type inference for more binary operators
Mostly just for primitive numeric types such as u32 and f64. Not
yet a general solution using trait resolution.
2019-01-07 20:11:31 +01:00
Marcus Klaas de Vries
3238c06a5a Add remaining binary operations to AST 2019-01-07 19:04:25 +01:00
Florian Diebold
7bb279b365 Implement autoderef for field accesses 2019-01-07 14:54:23 +01:00
bors[bot]
a6071c9f4c Merge #442
442: WIP: indent on typing dot r=matklad a=simonvandel

Fixes #439.

The unit test passes, but I can't seem to make VS code perform the action. The existing action on "=" doesn't work either on my end either though.

I didn't add any smart way of detecting the current indent level. Any ideas how I would do that?

Co-authored-by: Simon Vandel Sillesen <simon.vandel@gmail.com>
2019-01-07 06:26:09 +00:00
Simon Vandel Sillesen
f3c708ab7b my formatting tool locally messes things up 2019-01-07 06:24:07 +01:00
Simon Vandel Sillesen
979dcf36e4 fix nits 2019-01-07 06:16:04 +01:00
Florian Diebold
d618b1f2ce if let -> match 2019-01-07 01:10:29 +01:00
Florian Diebold
2dfb5e6ac0 Improve types for node_expr / node_pat 2019-01-07 00:05:19 +01:00
Florian Diebold
71f7d82e45 Introduce ArenaMap 2019-01-07 00:05:19 +01:00
Florian Diebold
cf49a11263 Sort ranges in type inference tests
Also rename the files to remove the numbers (they don't serve a purpose now that
there are only the data files).
2019-01-07 00:05:19 +01:00
Florian Diebold
6210e82041 Use HIR Expr for type inference
Now we can reuse the type inference inside a function when typing whitespace
etc. :)
2019-01-07 00:05:19 +01:00
Florian Diebold
a4e97f5a2b Show types when hovering patterns as well 2019-01-06 22:53:09 +01:00
bors[bot]
31c1999505 Merge #440
440: Implement type inference for boolean operators r=flodiebold a=marcusklaas

Tried implementing the easiest part of https://github.com/rust-analyzer/rust-analyzer/issues/390. Hope this is somewhat close to what the intent of the issue was. Found it surprisingly easy to find my way around the repository - it's well organized!

Very grateful for any pointers.

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-06 21:28:36 +00:00
Marcus Klaas de Vries
82d9a77dad Touch up type inference for boolean operators
Also try to infer its subexpressions and set type expectations
whenever possible.
2019-01-06 22:17:54 +01:00
Simon Vandel Sillesen
bbc044990a formatting 2019-01-06 22:06:22 +01:00
Simon Vandel Sillesen
0be055072d fix tests 2019-01-06 21:59:14 +01:00
Aleksey Kladov
8a3b489c2f kill module source 2019-01-06 20:01:26 +03:00
Aleksey Kladov
733383446f move submodule computationt to module_tree 2019-01-06 17:44:50 +03:00
Aleksey Kladov
17b2994b99 fix the test 2019-01-06 17:38:20 +03:00
Aleksey Kladov
5b0267ecf7 fix after rebase 2019-01-06 17:37:18 +03:00
Aleksey Kladov
fd4456d0ec flatten module structure 2019-01-06 17:36:10 +03:00
Aleksey Kladov
5a505189a8 adjust comments 2019-01-06 17:35:57 +03:00
Aleksey Kladov
c303e6fbdf fix ra_analysis to work with the new API 2019-01-06 17:35:57 +03:00
Aleksey Kladov
a7f4f7bfcc split module source into decl/defin 2019-01-06 17:35:57 +03:00
Aleksey Kladov
9cb02fd931 kill old module 2019-01-06 17:35:57 +03:00
Aleksey Kladov
3c2cb89087 add parent & resolve_path 2019-01-06 17:35:29 +03:00
Aleksey Kladov
1836f4db35 make source cancelable 2019-01-06 17:35:29 +03:00
Aleksey Kladov
b37fba7136 make deps cancelable 2019-01-06 17:35:29 +03:00
Aleksey Kladov
61687b9db6 fix tests 2019-01-06 17:35:29 +03:00
Aleksey Kladov
8c4d277036 switch source-binders to Module 2019-01-06 17:35:29 +03:00
Aleksey Kladov
147b0f94e6 Start code_model::Module 2019-01-06 17:35:29 +03:00
Aleksey Kladov
9a820dc0ee move crate to code_model_api 2019-01-06 17:35:29 +03:00
bors[bot]
eaf553dade Merge #441
441: hir::Expr r=matklad a=flodiebold

Still a bit to do, but I already adapted `FnScopes` and thought I'd get feedback already.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-06 13:45:22 +00:00
Simon Vandel Sillesen
4f3bc42349 add more tests 2019-01-06 12:24:33 +01:00
Aleksey Kladov
bc3e732ec5 split_import intention correctly works with use trees 2019-01-06 12:48:33 +03:00
Simon Vandel Sillesen
b0ffa98a00 add "." as a trigger char on type formatting 2019-01-06 09:56:00 +01:00
Simon Vandel Sillesen
2e52b27e71 refactor 2019-01-06 09:41:11 +01:00
Simon Vandel Sillesen
bb8624dff6 format code 2019-01-06 08:08:23 +01:00
Simon Vandel Sillesen
cfaaf33069 rename unused variable 2019-01-06 07:56:02 +01:00
Florian Diebold
98957f4e6f Add fn signature query 2019-01-06 01:13:31 +01:00
Simon Vandel Sillesen
f99398d9d5 indent on typing dot. fixes #439 2019-01-06 00:58:03 +01:00
Florian Diebold
e5a6cf8153 Various small code review improvements 2019-01-06 00:38:08 +01:00
Florian Diebold
8e3e5ab2c8 Make FnScopes use hir::Expr
This was a bit complicated. I've added a wrapper type for now that does the
LocalSyntaxPtr <-> ExprId translation; we might want to get rid of that or give
it a nicer interface.
2019-01-06 00:29:36 +01:00
Florian Diebold
136aba1cf3 Add HIR Expr machinery 2019-01-05 22:41:12 +01:00
Florian Diebold
a6f33b4ca5 Add test for invalidation of inferred types when typing inside function
This currently fails, but should work once we have hir::Expr.
2019-01-05 22:41:12 +01:00
Marcus Klaas de Vries
4fc233a02e Implement type inference for boolean operators 2019-01-05 21:28:30 +01:00
Aleksey Kladov
01cf32c46e fix tests 2019-01-05 21:09:11 +03:00
Aleksey Kladov
be84a112a7 show types in local variable hovers 2019-01-05 20:53:30 +03:00
Aleksey Kladov
ee461a2111 kill approximatelly_resolve_symbol 2019-01-05 20:00:03 +03:00
Aleksey Kladov
da32463cbf inline goto_defention tests 2019-01-05 19:41:43 +03:00
Aleksey Kladov
c2a0f5e50f move goto_defenition to a separate file 2019-01-05 19:30:49 +03:00
Aleksey Kladov
4551155073 introduce separate goto_defenition 2019-01-05 19:30:49 +03:00
Aleksey Kladov
ad2a5da259 kill accidentally added file 2019-01-05 19:30:42 +03:00
Aleksey Kladov
bdbdade036 move typeof to hover 2019-01-05 17:39:34 +03:00
Aleksey Kladov
9f44d4c56d fold doc_comment into hover 2019-01-05 17:33:31 +03:00
Aleksey Kladov
3ad0037f90 move hover implementation to ra_analysis 2019-01-05 17:24:17 +03:00
Aleksey Kladov
2560a9e807 wip 2019-01-05 16:40:50 +03:00
bors[bot]
8d51b02362 Merge #414
414: textDocument/hover returns both type name and doc_text r=matklad a=h-michael

implement #389

Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-05 13:12:41 +00:00
Aleksey Kladov
79fd6b5c88 change visibility can change pub to pub(crate) 2019-01-05 15:28:07 +03:00
Aleksey Kladov
ea3504057e split import assist 2019-01-05 13:56:33 +03:00
bors[bot]
481713a0e1 Merge #427
427: Remove extra space when joining lines in use items r=matklad a=alanhdu

Fixes #423.

Co-authored-by: Alan Du <alanhdu@gmail.com>
2019-01-05 07:16:48 +00:00
Alan Du
19c641390d Fix join_lines use_items right w/ and w/o comma 2019-01-04 22:06:36 -05:00
Alan Du
182ec76f13 Address join lines use items right } 2019-01-04 22:01:11 -05:00
Hirokazu Hata
341eb4ae87 Use both type_of and doc_text_for 2019-01-05 11:28:16 +09:00
bors[bot]
4a3ef8fe63 Merge #370
370: Self params & type r=matklad a=flodiebold

This implements type inference for `self`, so field completion for methods taking `self` works now.

 - rename `IMPL_ITEM` to `IMPL_BLOCK` -- rustc calls the methods etc. inside an impl `ImplItem`s, and the impl itself doesn't define an item, so I thought this name was clearer.
 - add HIR for impl blocks -- we collect all impls in a crate at once, so we can go from methods to containing impls, and since we will later also need to find all impls for a certain type (which may be anywhere in the crate, I think?). We could be more lazy here, but I don't know if it's worth the complexity.
 - resolve `self` and `Self` during type inference
 - refactor a bit in ty.rs as well

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-04 19:55:23 +00:00
Aleksey Kladov
6c8e54aaee ⬆️ salsa 2019-01-04 22:31:13 +03:00
Florian Diebold
e6aeabf96f Rename ImplsInCrateQuery as well 2019-01-04 19:52:07 +01:00
Alan Du
fae8960554 Remove extra space when joining lines in use items 2019-01-04 13:39:43 -05:00
Florian Diebold
443ddb73c3 Do impl collection per module, not per crate 2019-01-04 19:29:53 +01:00
Florian Diebold
334ca0d9a7 Rename ImplBlock::target -> target_type, and add target_trait already 2019-01-04 19:16:39 +01:00
Florian Diebold
bb029cd29b Rename traits::impl_item -> impl_block as well, as well as the tests 2019-01-04 19:15:15 +01:00
Florian Diebold
0ad13b9477 Add a test for self field completion
Needed to add a default crate graph in the analysis for that.
2019-01-04 19:14:52 +01:00
Florian Diebold
6ab0e292d2 Refactor a bit 2019-01-04 19:14:22 +01:00
Florian Diebold
538147bf94 Resolve the Self type 2019-01-04 19:13:50 +01:00
Florian Diebold
d4db61b9a1 Resolve the self parameter during type inference 2019-01-04 19:12:29 +01:00
Florian Diebold
111126ed3c Type the self parameter 2019-01-04 19:10:50 +01:00
Florian Diebold
ae9530addc Add HIR for impl blocks
Since we need to be able to go from def to containing impl block, as well as the
other direction, and to find all impls for a certain type, a design similar to
the one for modules, where we collect all impls for the whole crate and keep
them in an arena, seemed fitting. The ImplBlock type, which provides the public
interface, then consists only of an Arc to the arena containing all impls, and
the index into it.
2019-01-04 19:10:47 +01:00
Florian Diebold
226e31dae9 Add test for self type inference 2019-01-04 18:28:43 +01:00
Florian Diebold
fe6c4115f6 Rename ImplItem to ImplBlock
rustc uses the name ImplItem for items in impls, not the impl {} block itself,
which could lead to confusion.
2019-01-04 18:28:36 +01:00
Aleksey Kladov
3fe6f422f9 remove id arena 2019-01-04 16:58:10 +03:00
Aleksey Kladov
291d578938 extract area to a crate 2019-01-04 16:58:10 +03:00
csmoe
a0ef196d04 add mod doc comments test in ast 2019-01-04 21:51:45 +08:00
csmoe
f604ff5b2f parse doc comment for items 2019-01-04 21:29:00 +08:00
csmoe
8a6d6ac132 add mod doc comment test 2019-01-04 21:28:09 +08:00
bors[bot]
6295bbe6ec Merge #391
391: docing parser methods r=csmoe a=csmoe



Co-authored-by: csmoe <csmoe@msn.com>
2019-01-04 04:36:40 +00:00
csmoe
58139c558a consume trivias for type/const def 2019-01-04 12:22:57 +08:00
csmoe
df591a1e48 doc parsing events 2019-01-04 12:21:47 +08:00
Aleksey Kladov
d61707b4e1 index stuff produced by macros 2019-01-03 21:29:17 +03:00
Aleksey Kladov
ebd7c04faa construct index from symbols directly 2019-01-03 21:29:05 +03:00
Aleksey Kladov
cd32177a25 don't create many compilation units for tests 2019-01-03 20:15:12 +03:00
bors[bot]
8a24f25482 Merge #419
419: file-id-to-symbol r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-03 16:56:08 +00:00
Aleksey Kladov
9bb2a74256 embed file_id into FileSymbol 2019-01-03 19:55:34 +03:00
Aleksey Kladov
233b170e83 add pub(crate) works for named fields 2019-01-03 19:37:41 +03:00
bors[bot]
33924c0939 Merge #416
416: assist-builder r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-03 16:08:52 +00:00
Aleksey Kladov
6be39ba758 fix the test 2019-01-03 19:08:24 +03:00
Aleksey Kladov
a4635a199b more enterprisey assists API 2019-01-03 18:59:17 +03:00
Bernardo
7d9e02e5a2 fix tests 2019-01-03 14:43:47 +01:00
Bernardo
3ab328b49a use lsp WorkspaceEdit instead of custom source_file_edits and file_system_edits 2019-01-03 14:20:15 +01:00
Aleksey Kladov
a5935687cb split assists over several files 2019-01-03 15:21:49 +03:00
Aleksey Kladov
5323e59996 rename code-actions -> assists 2019-01-03 15:21:31 +03:00
Aleksey Kladov
0a80d9685a visibility owner 2019-01-03 15:21:31 +03:00
Hirokazu Hata
6ee7788513 Return type name when doc_text_for returns nothing 2019-01-03 21:15:23 +09:00
Aleksey Kladov
3e764f97eb hardcode vec macro 2019-01-03 14:48:23 +03:00
bors[bot]
d29e98dd97 Merge #409
409: Add Analysis#teype_of test r=matklad a=h-michael



Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-03 10:06:32 +00:00
Hirokazu Hata
4363e7b9b2 Deive type_of test from tests 2019-01-03 19:04:42 +09:00
Aleksey Kladov
8d61853509 docs 2019-01-03 12:57:30 +03:00
Hirokazu Hata
f99e96698c Remove unnecessary mock functions 2019-01-03 18:27:02 +09:00
Aleksey Kladov
03ea6bcbff use LocalPtr in navigation target 2019-01-03 12:26:40 +03:00
Aleksey Kladov
267a89bca2 use LocalSyntaxPtr for file symbol 2019-01-03 12:26:40 +03:00
Aleksey Kladov
f534d2132b move some logic to navigation target 2019-01-03 12:26:40 +03:00
Aleksey Kladov
80a91e6735 add kind to LocalSyntaxPtr 2019-01-03 12:26:40 +03:00
Aleksey Kladov
f673529a33 explain that completion shouldn't do filtering 2019-01-03 12:23:15 +03:00
Hirokazu Hata
f5992964ed Add Analysis#teype_of test 2019-01-03 12:07:20 +09:00
bors[bot]
54efd8204e Merge #407
407: run r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 17:13:06 +00:00
Aleksey Kladov
28f6eedba5 simplify runnables 2019-01-02 20:12:38 +03:00
bors[bot]
4f30c45933 Merge #406
406: Simplify r=matklad a=matklad

Get rid of `AnalysisImpl` wrapper around salsa database. It was useful before we migrated by salsa, but it's long have been just a useless boilerplate. 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 16:42:29 +00:00
Aleksey Kladov
ef08b6c084 fix compilation 2019-01-02 19:41:57 +03:00
Aleksey Kladov
5d483cb998 doctrings 2019-01-02 19:40:41 +03:00
Aleksey Kladov
08d1537468 get rid of AnalysisImpl 2019-01-02 19:20:56 +03:00
gfreezy
9672ae001e extend selection inside a string literal should select a word first 2019-01-02 23:42:38 +08:00
Aleksey Kladov
e9b47dbb36 remove AnalysisHostImpl 2019-01-02 18:41:41 +03:00
Aleksey Kladov
2f22c861a9 remove some methods from analysis impl 2019-01-02 18:11:49 +03:00
Aleksey Kladov
a94530afb3 move world-symbols to file_symbols 2019-01-02 18:08:14 +03:00
bors[bot]
29d8bfb9c9 Merge #404
404: Move FileSymbol to ra_analysis r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 14:26:06 +00:00
Aleksey Kladov
76910639e6 fix tests 2019-01-02 17:25:28 +03:00
Aleksey Kladov
fb775a293d make FileSymbol private 2019-01-02 17:11:04 +03:00
Aleksey Kladov
830abe0c1b use navigation target in API 2019-01-02 17:09:39 +03:00
Aleksey Kladov
d25c89f760 introduce navigation target 2019-01-02 16:53:40 +03:00
Aleksey Kladov
a4b4fd7dc5 move symbols to ra_analysis 2019-01-02 16:29:08 +03:00
Aleksey Kladov
1076e82856 small rename 2019-01-02 16:00:35 +03:00
Aleksey Kladov
35b3fc02e0 comments 2019-01-02 16:00:01 +03:00
Aleksey Kladov
4fe0ec5497 rename 2019-01-02 12:49:47 +03:00
Aleksey Kladov
db8d293208 move macro id to ids 2019-01-02 00:37:36 +03:00
Aleksey Kladov
42cc77703b move more stuff to ids 2019-01-02 00:30:00 +03:00
Aleksey Kladov
37ed2f35ba rename MFileId -> HirFileId 2019-01-02 00:09:54 +03:00
Aleksey Kladov
9c65e61849 introduce ids module 2019-01-01 22:47:10 +03:00
Aleksey Kladov
fca1422ea3 add tests for macro generated items 2019-01-01 22:15:35 +03:00
Aleksey Kladov
756e878158 add items from macros to modules 2019-01-01 22:15:35 +03:00
Aleksey Kladov
4a3f76d3bb wip 2019-01-01 22:15:35 +03:00
Aleksey Kladov
f8d419ee89 fix tests 2019-01-01 22:15:35 +03:00
Aleksey Kladov
289391e163 use MFile 2019-01-01 22:15:35 +03:00
Aleksey Kladov
4161466918 introduce MFileId 2019-01-01 22:15:35 +03:00
Aleksey Kladov
9d4af40995 work towards brining macros to nameres 2019-01-01 22:15:35 +03:00
Aleksey Kladov
7dc45745a3 save top-level macros in module items 2019-01-01 22:15:35 +03:00
Aleksey Kladov
e5b2fd6771 hard-code expansion of query_group 2019-01-01 22:15:35 +03:00
Aleksey Kladov
832bae8e28 fix tests 2019-01-01 22:15:35 +03:00
Aleksey Kladov
882a86240f rename 2019-01-01 22:15:35 +03:00
Aleksey Kladov
b2fec18098 move more macros to hir 2019-01-01 22:15:35 +03:00
Aleksey Kladov
57030f587b use macros database in analysis 2019-01-01 22:15:35 +03:00
Aleksey Kladov
d753656192 introduce MacrosDatabase 2019-01-01 22:15:35 +03:00
gfreezy
39dab68404 place complete_use_tree_keyword in the same mod with complete_expr_keyword 2019-01-01 23:12:51 +08:00
gfreezy
9895529d5c move to a seperate complete_use_tree_keyword mod 2019-01-01 23:00:29 +08:00
gfreezy
22ea00d5ff complete "self" and "super" 2019-01-01 22:45:53 +08:00
gfreezy
f408b1caa3 complete "use crate" for "use cr" too 2019-01-01 22:10:11 +08:00
gfreezy
fc2d7d1e1f complete crate in use stmt 2019-01-01 21:55:27 +08:00
Aleksey Kladov
acc38a9737 bump deps 2019-01-01 16:21:50 +03:00
DJMcNab
0ddeb3b824 Fix the same bug as #396 but for bytes too 2019-01-01 12:10:21 +00:00
bors[bot]
5a866a772c Merge #396
396: Fix the `panic` found whilst fuzzing r=matklad,me a=DJMcNab

This occurred when a non-ascii character was used in an ascii escape, for example in the motivating example: `if'\xɿ`, which can be further simplified to `'\xɿ`.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-01 11:11:20 +00:00
DJMcNab
0fd87cbc47 Use an else if 2019-01-01 11:10:08 +00:00
csmoe
b01e707dba doc parser input 2019-01-01 16:09:32 +08:00
DJMcNab
72ab6f7727 Fix the panic found whilst fuzzing 2018-12-31 23:02:04 +00:00
bors[bot]
6044ec5057 Merge #395
395: generalize r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-31 16:06:27 +00:00
Aleksey Kladov
862c99d0d5 generalize highlighting to work with nodes 2018-12-31 19:06:00 +03:00
Aleksey Kladov
f1e8ebfbeb generalize extend selection to work with nodes 2018-12-31 19:01:51 +03:00
bors[bot]
2a65020442 Merge #165
165: Make modules with tests runnable r=farodin91 a=farodin91

Fixes #154

I having problems to traverse the path to module. The main problem is that module_tree only supports `FileId` and not `Module` in files. Any idea?

I need to clean up the code a bit later.

Co-authored-by: Jan Jansen <farodin91@googlemail.com>
2018-12-31 14:15:34 +00:00
Jan Jansen
05daa86634 Make modules with tests runnable
Fixes #154
2018-12-31 15:00:04 +01:00
bors[bot]
700b334a28 Merge #393
393: Add a fuzzing subcommand r=matklad a=DJMcNab

Part of https://github.com/rust-analyzer/rust-analyzer/issues/61#issuecomment-450641045.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-31 13:16:09 +00:00
DJMcNab
f61830d676 Add a fuzzing subcommand 2018-12-31 13:14:06 +00:00
Aleksey Kladov
a3ee07ac14 fix icons in completion 2018-12-31 16:06:14 +03:00
csmoe
ea7b569e1b docing parser methods 2018-12-31 21:00:05 +08:00
bors[bot]
2746dacac0 Merge #385
385: Implement DocumentHighlight r=matklad a=DJMcNab

Fixes #80.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-31 12:37:05 +00:00
DJMcNab
be75e547ce Use TryConv for conversion 2018-12-31 12:17:05 +00:00
DJMcNab
79941a9e70 Implement DocumentHighlight 2018-12-31 11:08:44 +00:00
dependabot[bot]
96ecd73a5c
Bump serde_json from 1.0.33 to 1.0.34
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.33...v1.0.34)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 09:48:16 +00:00
dependabot[bot]
51ce71686a
Bump failure from 0.1.3 to 0.1.4
Bumps [failure](https://github.com/rust-lang-nursery/failure) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/rust-lang-nursery/failure/releases)
- [Changelog](https://github.com/rust-lang-nursery/failure/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-lang-nursery/failure/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 08:53:49 +00:00
dependabot[bot]
2d9428b54a
Bump failure_derive from 0.1.3 to 0.1.4
Bumps [failure_derive](https://github.com/withoutboats/failure_derive) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/withoutboats/failure_derive/releases)
- [Commits](https://github.com/withoutboats/failure_derive/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 05:36:03 +00:00
Aleksey Kladov
0a8d085619 remove backtraces from Cancelled
Hopefully we won't need them for debugging. If we do need them, it
should be easy to add back.
2018-12-31 00:38:50 +03:00
bors[bot]
acc61cc284 Merge #375
375: Move renames into ra_analysis and rename the correct range r=DJMcNab a=DJMcNab

Fixes #230. Supersedes #235.

TODO: add some tests for this

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-30 20:43:58 +00:00
DJMcNab
872950bc18 Test renames 2018-12-30 20:43:30 +00:00
bors[bot]
f9b58454a4 Merge #378
378: migrate-to-tempdir r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 20:33:32 +00:00
Aleksey Kladov
f0edb93df2 ⬆️ tempdir 2018-12-30 23:33:04 +03:00
bors[bot]
45e3de8eed Merge #377
377: update crossbeam r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 20:24:48 +00:00
Aleksey Kladov
c2c10b9014 ⬆️ crossbeam
closes #189
2018-12-30 23:23:31 +03:00
Aleksey Kladov
effc1eae8b migrate gen-lsp-server to new crossbeam 2018-12-30 23:02:26 +03:00
Aleksey Kladov
29a52f8d56 refine semi completion 2018-12-30 22:14:35 +03:00
DJMcNab
c402b007a3 Move renames into ra_analysis 2018-12-30 18:14:55 +00:00
bors[bot]
c0d1b17a4e Merge #366
366: parse minus before number literal pattern r=matklad a=csmoe

r?@matklad

![unknown](https://user-images.githubusercontent.com/35686186/50547871-d5449e00-0c7d-11e9-9ff5-1031e78019de.png)


Co-authored-by: csmoe <csmoe@msn.com>
2018-12-30 16:40:16 +00:00
bors[bot]
942c45a31c Merge #374
374: add semi after break&continue r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 16:25:30 +00:00
csmoe
53c94e3ad8 parse minus before number literal 2018-12-30 23:25:07 +08:00
Aleksey Kladov
822abb3e62 semies after break&continue 2018-12-30 18:08:17 +03:00
bors[bot]
0f95d8523e Merge #365
365: implement struct shorthand initialization diagnostic r=matklad a=gfreezy



Co-authored-by: gfreezy <gfreezy@gmail.com>
2018-12-30 15:07:27 +00:00
gfreezy
e1ef205a19 avoid allocating an unnecessary intermediate vector & not traverse multiple times 2018-12-30 23:03:43 +08:00
gfreezy
a3520bf01d implement struct shorthand initialization diagnostic 2018-12-30 22:26:59 +08:00
Aleksey Kladov
0f75ac1ae0 add ; to last return in block 2018-12-30 17:22:12 +03:00
Aleksey Kladov
c182aab546 don't add () in use items 2018-12-30 16:29:10 +03:00
Aleksey Kladov
3ee7a95315 use completion context when creating completion 2018-12-30 16:20:17 +03:00
Aleksey Kladov
0e90e0436a remove runtime dependency on tools 2018-12-30 15:28:54 +03:00
bors[bot]
8d1df9834c Merge #358
358: Add support for formatting entire document with rustfmt r=matklad a=aleksanb

Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.

Part of https://github.com/rust-analyzer/rust-analyzer/issues/160.

Co-authored-by: Aleksander Vognild Burkow <aleksanderburkow@gmail.com>
2018-12-30 10:16:22 +00:00
Aleksey Kladov
1ac934eafa add paramthesis when completing functions 2018-12-30 12:49:07 +03:00
Aleksander Vognild Burkow
0cb270e75d Simplify failure bail code 2018-12-30 00:21:15 +01:00
DJMcNab
5dd602f901 Reuse has_rs_extension in io.rs 2018-12-29 22:45:01 +00:00
Aleksander Vognild Burkow
ed47c93afe Install rustfmt in rustfmt test 2018-12-29 23:38:26 +01:00
Aleksander Vognild Burkow
09c20c8fcf Add better error message for Command failure 2018-12-29 23:38:26 +01:00
DJMcNab
07202f944c Remove some unnecessary unwraps by using the Result::ok
combinatoric
2018-12-29 22:33:28 +00:00
DJMcNab
c881fc607e Fix instance of uneeded brackets in use_statement (thanks to #333) 2018-12-29 22:32:39 +00:00
DJMcNab
f18e25f24c Improve comment contents 2018-12-29 22:30:54 +00:00
DJMcNab
764ddc0c85 Fix a switched line in a comment 2018-12-29 22:07:56 +00:00
Aleksander Vognild Burkow
8b24f158f7 Add support for formatting entire document with rustfmt
Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.
2018-12-29 21:57:46 +01:00
Florian Diebold
4142792d1f Add more docs in ty.rs
Also get rid of the indirection through query_definitions for the type-related
queries.
2018-12-29 20:27:13 +01:00
bors[bot]
4a3d6aa26a Merge #356
356: Fix a bug in char literal validation discovered through fuzzing r=matklad a=DJMcNab

We also add a Cargo.lock to the fuzzing directory, as that isn't gitignored automatically, so I imagine it should be committed.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-29 12:50:34 +00:00
DJMcNab
b67a4e7a57 Add fuzz failure to the fuzz-failures directory 2018-12-29 12:45:48 +00:00
DJMcNab
054f22f231 Fix a fuzzing bug and add Cargo.lock to the fuzzing directory 2018-12-29 12:40:08 +00:00
Florian Diebold
b1590bdf6a Missing return type means unit, not unknown 2018-12-29 12:08:57 +01:00
Florian Diebold
cfa1de72eb Implement type variables
This will really become necessary when we implement generics, but even now, it
allows us to reason 'backwards' to infer types of expressions that we didn't
understand for some reason.

We use ena, the union-find implementation extracted from rustc, to keep track of
type variables.
2018-12-29 12:04:34 +01:00
Aleksey Kladov
7928995876 nameify structs&enums 2018-12-28 21:34:58 +03:00
Aleksey Kladov
11122e29b7 completion for enum variants 2018-12-28 21:07:47 +03:00
Aleksey Kladov
1a860dba38 simplify 2018-12-28 20:45:58 +03:00
Aleksey Kladov
5299a35e3d extend selection works with macros 2018-12-28 20:33:39 +03:00
bors[bot]
7a268b9b96 Merge #350
350: Super simple macro support r=matklad a=matklad

Super simple support for macros, mostly for figuring out how to fit them into the current architecture. Expansion is hard-coded and string based (mid-term, we should try to copy-paste macro-by-example expander from rustc). 

Ideally, we should handle

* highlighting inside the macro (done)
* extend selection inside the macro 
* completion inside the macro
* indexing structs, produced by the macro

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-28 16:17:19 +00:00
Aleksey Kladov
13631a2955 ⬆️ salsa 2018-12-28 19:10:31 +03:00
Aleksey Kladov
b911ee542b move macro to a separate module 2018-12-28 18:21:30 +03:00
Aleksey Kladov
fd33c89207 switch to FileRange 2018-12-28 18:17:43 +03:00
Aleksey Kladov
02924174bb introduce FileRange 2018-12-28 18:17:43 +03:00
Aleksey Kladov
d7440a5f49 highlight macro idents 2018-12-28 18:17:43 +03:00
Aleksey Kladov
406505e096 super simplistic macro expansion 2018-12-28 16:59:58 +03:00
Aleksey Kladov
072028e679 add macro-call node 2018-12-28 13:27:30 +03:00
Aleksey Kladov
dc496d0516 move highlightning to a separate file 2018-12-28 13:14:39 +03:00
dependabot[bot]
626badc30a
Bump serde from 1.0.82 to 1.0.83
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.82...v1.0.83)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-28 06:08:30 +00:00
Aleksey Kladov
bc833216d7 simplify 2018-12-28 00:08:33 +03:00
Aleksey Kladov
58a631f39a dead code 2018-12-28 00:01:56 +03:00
Aleksey Kladov
dddbac6877 remove FnId 2018-12-27 23:51:44 +03:00
Aleksey Kladov
e066050671 use names everywhere 2018-12-27 21:21:10 +03:00
Aleksey Kladov
63f54d234f dont leak Name details in testing 2018-12-27 21:02:08 +03:00
Aleksey Kladov
a9f55029b9 introduce known names 2018-12-27 20:26:15 +03:00
Aleksey Kladov
d963042ca9 introduce hir::Name 2018-12-27 20:07:21 +03:00
Aleksey Kladov
e4de2c8d7f add function to completion ctx 2018-12-27 17:33:52 +03:00
bors[bot]
7a1ed6400d Merge #341
341: Bump languageserver-types from 0.53.0 to 0.53.1 r=matklad a=dependabot[bot]

Bumps [languageserver-types](https://github.com/gluon-lang/languageserver-types) from 0.53.0 to 0.53.1.
<details>
<summary>Commits</summary>

- [`1a6c6c1`](1a6c6c18fc) (cargo-release) version 0.53.1
- [`5591192`](5591192047) Merge pull request [#88](https://github-redirect.dependabot.com/gluon-lang/languageserver-types/issues/88) from Xanewok/hover-clone
- [`c78120b`](c78120bf28) Add `Clone` impl for HoverContents and related
- See full diff in [compare view](https://github.com/gluon-lang/languageserver-types/compare/v0.53.0...v0.53.1)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=languageserver-types&package-manager=cargo&previous-version=0.53.0&new-version=0.53.1)](https://dependabot.com/compatibility-score.html?dependency-name=languageserver-types&package-manager=cargo&previous-version=0.53.0&new-version=0.53.1)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

Co-authored-by: dependabot[bot] <support@dependabot.com>
2018-12-27 13:38:15 +00:00
dependabot[bot]
74f342648d
Bump languageserver-types from 0.53.0 to 0.53.1
Bumps [languageserver-types](https://github.com/gluon-lang/languageserver-types) from 0.53.0 to 0.53.1.
- [Release notes](https://github.com/gluon-lang/languageserver-types/releases)
- [Changelog](https://github.com/gluon-lang/languageserver-types/blob/master/release.toml)
- [Commits](https://github.com/gluon-lang/languageserver-types/compare/v0.53.0...v0.53.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 13:15:04 +00:00
dependabot[bot]
4017966a0b
Bump parking_lot from 0.6.4 to 0.7.0
Bumps [parking_lot](https://github.com/Amanieu/parking_lot) from 0.6.4 to 0.7.0.
- [Release notes](https://github.com/Amanieu/parking_lot/releases)
- [Changelog](https://github.com/Amanieu/parking_lot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Amanieu/parking_lot/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 13:14:24 +00:00
bors[bot]
d8bfad9e92 Merge #343 #344
343: Bump arrayvec from 0.4.9 to 0.4.10 r=matklad a=dependabot[bot]

Bumps [arrayvec](https://github.com/bluss/arrayvec) from 0.4.9 to 0.4.10.
<details>
<summary>Commits</summary>

- [`21661fa`](21661facf8) 0.4.10
- [`06930d2`](06930d27ce) FIX: Remove unused Copy/Clone for MaybeUninit
- [`85d9a06`](85d9a06a62) FIX: Use repr(C) MaybeUninit after discussion with RalfJung
- See full diff in [compare view](https://github.com/bluss/arrayvec/compare/0.4.9...0.4.10)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=arrayvec&package-manager=cargo&previous-version=0.4.9&new-version=0.4.10)](https://dependabot.com/compatibility-score.html?dependency-name=arrayvec&package-manager=cargo&previous-version=0.4.9&new-version=0.4.10)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

344: Bump itertools from 0.7.11 to 0.8.0 r=matklad a=dependabot[bot]

Bumps [itertools](https://github.com/bluss/rust-itertools) from 0.7.11 to 0.8.0.
<details>
<summary>Commits</summary>

- [`cd0602a`](cd0602addc) 0.8.0
- [`5a8f2fd`](5a8f2fd5ed) MAINT: Require Rust 1.24 as minimum version
- [`4986d92`](4986d92d7f) DOC: Minor edits to module docs
- [`01f15a0`](01f15a0910) Merge [#288](https://github-redirect.dependabot.com/bluss/rust-itertools/issues/288)
- [`883d40a`](883d40a6ef) map_into method
- [`3bf265d`](3bf265d5b7) Merge pull request [#321](https://github-redirect.dependabot.com/bluss/rust-itertools/issues/321) from JohnHeitmann/master
- [`e820996`](e820996f64) Document the trait extension behavior of Itertools a bit more clearly
- [`44c9654`](44c9654fdb) Merge pull request [#318](https://github-redirect.dependabot.com/bluss/rust-itertools/issues/318) from bluss/std-deprecations
- [`d2e254f`](d2e254f22f) API: Fix the mystery deprecation message for Step
- [`602f2f6`](602f2f675e) API: Deprecate .foreach() in favour of std's .for_each()
- Additional commits viewable in [compare view](https://github.com/bluss/rust-itertools/compare/0.7.11...0.8.0)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=itertools&package-manager=cargo&previous-version=0.7.11&new-version=0.8.0)](https://dependabot.com/compatibility-score.html?dependency-name=itertools&package-manager=cargo&previous-version=0.7.11&new-version=0.8.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>

Co-authored-by: dependabot[bot] <support@dependabot.com>
2018-12-27 13:06:30 +00:00
dependabot[bot]
a400444e33
Bump itertools from 0.7.11 to 0.8.0
Bumps [itertools](https://github.com/bluss/rust-itertools) from 0.7.11 to 0.8.0.
- [Release notes](https://github.com/bluss/rust-itertools/releases)
- [Commits](https://github.com/bluss/rust-itertools/compare/0.7.11...0.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 12:32:23 +00:00
dependabot[bot]
6fb53caea5
Bump arrayvec from 0.4.9 to 0.4.10
Bumps [arrayvec](https://github.com/bluss/arrayvec) from 0.4.9 to 0.4.10.
- [Release notes](https://github.com/bluss/arrayvec/releases)
- [Commits](https://github.com/bluss/arrayvec/compare/0.4.9...0.4.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-27 12:32:18 +00:00
bors[bot]
e422c2e2f4 Merge #325
325: implement translate_offset_with_edit r=matklad a=vemoo

- Implement `translate_offset_with_edit` to resolve #105 
- Add proptest impls for text, offsets and edits and use them in tests for `translate_offset_with_edit` and `LineIndex`
- Added benchmark for `translate_offset_with_edit`

Co-authored-by: Bernardo <berublan@gmail.com>
2018-12-27 12:19:19 +00:00
Aleksey Kladov
49b0fe20ab fix suffix ranges 2018-12-27 15:10:30 +03:00
Aleksey Kladov
a912b261d3 dump validation errors 2018-12-27 15:07:51 +03:00
Aleksey Kladov
359e70d1b2 support literal suffixes 2018-12-27 15:03:18 +03:00
Aleksey Kladov
73ded3c63c dedupe literal parsers 2018-12-27 14:42:46 +03:00
Aleksey Kladov
8c2c1bf9eb check edits in diagnostics 2018-12-27 13:35:08 +03:00
bors[bot]
1d6dcef5c5 Merge #332
332: Struct types r=matklad a=flodiebold

Infer types for struct fields, and add basic field completions. There's also some code for enums, but I focused on getting structs working.

There's still ways to go before this becomes useful: There's no autoderef (or even reference types) and no inference for `self`, for example.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2018-12-27 10:08:34 +00:00
Aleksey Kladov
93996fecdc add cancelation module & cancelation backtraces 2018-12-27 13:03:32 +03:00
Aleksey Kladov
62c40b0e91 fix the test 2018-12-27 12:54:59 +03:00
Aleksey Kladov
4e2dffd798 expose make_pub_crate action 2018-12-27 12:35:40 +03:00
gfreezy
cd60998b9b fix use std::{self} 2018-12-27 00:51:27 +08:00
Florian Diebold
bc745a1396 Resolve field types lazily
I.e. not already when getting the HIR for the struct.
2018-12-25 21:40:33 +01:00
Bernardo
1cda43aafd test code and dependency cleanup 2018-12-25 21:26:36 +01:00
Florian Diebold
cdca397061 Add a hir::TypeRef as an intermediate between ast::TypeRef and ty::Ty 2018-12-25 21:14:13 +01:00
Bernardo
e9c186e48a change to TextEdit to avoid allocation and sort
rename newline to step where applicable
2018-12-25 20:49:18 +01:00
Florian Diebold
2870effd5c Implement reference / pointer types
- parse them
 - infer types of & and * expressions
2018-12-25 20:36:06 +01:00
Bernardo
863ed19946 remove benchmark and simplify tests 2018-12-25 20:14:27 +01:00
Bernardo
6b2da4e547 use new translate_offset_with_edit for TryConvWith
doc comments
2018-12-25 20:06:49 +01:00
Bernardo
aff0124b37 add line_index proptest 2018-12-25 20:03:14 +01:00
Bernardo
c886b72dab make criterion args work, small simplification 2018-12-25 20:03:14 +01:00
Bernardo
dc2afae991 fix arbitrary offset generation, col translation working 2018-12-25 20:03:14 +01:00
Bernardo
5c8525ce4a column translation implemented but not quite working yet 2018-12-25 20:03:14 +01:00
Bernardo
36f2b1f3b9 iterate over Steps which are either, newlines or multibyte chars 2018-12-25 20:03:14 +01:00
Bernardo
1c44ba0f04 simplify newline check with macro 2018-12-25 20:03:14 +01:00
Bernardo
d6312085a1 remove slower impl, add benchmarks 2018-12-25 20:03:14 +01:00
Bernardo
a005d2a614 final iteration, faster a bit simpler
the main thing is we iterate over inserted newlines at once for each edit
2018-12-25 19:59:02 +01:00
Bernardo
7299df8409 simplified version 2018-12-25 19:59:02 +01:00
Bernardo
8c9df62c1c move translate_offset_with_edit to ra_editor 2018-12-25 19:59:02 +01:00
Bernardo
881c29192d initial newline translation working
todo:
cleanup, simplify
handle columns
2018-12-25 19:55:05 +01:00
Bernardo
d951979159 test translate_offset_with_edit against simple impl for single edits 2018-12-25 19:49:55 +01:00
Bernardo
dee426e1b1 simplify and reduce number of values explored 2018-12-25 19:45:21 +01:00
Bernardo
3d98744c2a proptest strategies for TextUnit and AtomTextEdit 2018-12-25 19:45:21 +01:00
gfreezy
16996e9947 fix tests 2018-12-26 01:00:27 +08:00
Florian Diebold
b96d361239 Handle structs/enums with missing names a bit better 2018-12-25 17:55:50 +01:00
gfreezy
72eb9de747 add fix for removing unnecessary braces in use statements 2018-12-26 00:45:13 +08:00
Florian Diebold
3e4d41d1e4 Determine receiver for completion in a more robust way
Also rename a parameter.
2018-12-25 17:43:58 +01:00
Florian Diebold
3befd1a9e8 Cleanup 2018-12-25 15:44:10 +01:00
Florian Diebold
e5a8089b08 Add . to trigger characters 2018-12-25 15:27:15 +01:00
Florian Diebold
ab0b63992b Implement basic completion for fields 2018-12-25 15:27:15 +01:00
Florian Diebold
0d724ea572 Improve parsing of incomplete field accesses in preparation for field completion
We need to be able to get the receiver even if there is no field name yet, and
currently "a." wouldn't get parsed as a field name at all. This seems to help.
2018-12-25 15:16:42 +01:00
Florian Diebold
55c941cd9f Type field accesses 2018-12-25 15:16:42 +01:00
Florian Diebold
07a7285965 Collect field data for structs/enum variants 2018-12-25 15:16:42 +01:00
Florian Diebold
4cb7b0f2af Add AST definitions for struct/variant fields etc.
Fixes #117
2018-12-25 15:16:42 +01:00
Florian Diebold
6fcd38cc81 Infer result of struct literals, and recurse into their child expressions 2018-12-25 15:16:42 +01:00
Florian Diebold
4ff1618520 Do name resolution by namespace (types/values) 2018-12-25 15:16:42 +01:00
Florian Diebold
b5b68f2094 Add basic HIR and types for structs/enums 2018-12-25 15:16:42 +01:00
Aleksey Kladov
8d49c098a5 cancelled is not Copy 2018-12-25 13:36:39 +03:00
Aleksey Kladov
21293d0533 fix warning conversion 2018-12-25 02:07:30 +03:00
bors[bot]
b65ba8f1d6 Merge #326
326: resolved #324: remove unnecessary braces in use statement. r=matklad a=gfreezy

Add inspection for unnecessary braces in use statement

Co-authored-by: gfreezy <gfreezy@gmail.com>
2018-12-24 18:39:31 +00:00
gfreezy
0fb8894fbe fix tests 2018-12-24 23:01:16 +08:00
gfreezy
29798c763c remove option from Diagnostic 2018-12-24 23:00:18 +08:00
gfreezy
70df097c89 keep severity to Error & WeakWarning 2018-12-24 22:48:46 +08:00
bors[bot]
67e768466f Merge #327
327: Beginnings of type inference r=flodiebold a=flodiebold

I was a bit bored, so I thought I'd try to start implementing the type system and see how far I come 😉  This is obviously still extremely WIP, only very basic stuff working, but I thought I'd post this now to get some feedback as to whether this approach makes sense at all.

There's no user-visible effect yet, but the type inference has tests similar to the ones for the parser. My next step will probably be to implement struct types, after which this could probably be used to complete fields.

I realize this may all get thrown away when/if the compiler query system gets usable, but I feel like there are lots of IDE features that could be implemented with somewhat working type inference in the meantime 😄 

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2018-12-24 14:40:11 +00:00
Florian Diebold
4befde1eee Change inference tests to have one per file 2018-12-24 15:36:54 +01:00
Florian Diebold
655f5bc261 Rename a variable for consistency 2018-12-24 15:19:49 +01:00
Florian Diebold
76fb05d91d Clean up Ty a bit
Removing irrelevant comments copied from rustc etc.
2018-12-24 15:18:37 +01:00
bors[bot]
abe09eb5ed Merge #278
278: Add make_pub_crate code action to ra_editor r=matklad a=h-michael

implement #170

Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2018-12-24 13:51:27 +00:00
bors[bot]
b052059f86 Merge #302
302: WIP: Support tracing lsp requests. r=DJMcNab a=DJMcNab

EDIT: We need to work out a better way to handle settings before this can be merged. Help wanted

TODO: Debug why decorations are sent even when highlightingOn is disabled
This makes the log volume so high its impossible to work with anyway.
(Continuation of #84 [#99 only disabled using it, not making sure we don't send it]).

These logs can be used in https://microsoft.github.io/language-server-protocol/inspector/

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-24 13:47:27 +00:00
Hirokazu Hata
c14ca038da Add make_pub_crate code action to ra_editor 2018-12-24 11:03:59 +09:00
Florian Diebold
a1d0b5bc3c Prepare Ty::new for resolution 2018-12-23 17:49:30 +01:00
gfreezy
17b35a7f7d remove unnecessary braces in use statments 2018-12-24 00:40:36 +08:00
gfreezy
346638c809 add serverity to vscode diagnostics 2018-12-24 00:39:33 +08:00
Florian Diebold
c85748f5fb Type the return values of call expressions 2018-12-23 17:29:03 +01:00
Florian Diebold
ef67581104 Resolve paths to defs (functions currently) during type inference 2018-12-23 17:13:11 +01:00
gfreezy
000aacafda resolved #324: remove unnecessary braces in use statement. 2018-12-23 23:50:11 +08:00
Florian Diebold
93ffbf80c6 Make let statements kind of work 2018-12-23 14:01:50 +01:00
Florian Diebold
5d60937090 Remove unwraps 2018-12-23 13:48:04 +01:00
Florian Diebold
b4139d54fc Get rid of the terrible nesting in PathExpr inference 2018-12-23 13:48:04 +01:00
Florian Diebold
515c3bc59b Cleanup 2018-12-23 13:48:04 +01:00
Florian Diebold
7348f7883f Add testing infrastructure for type inference
- move dir_tests to test_utils for that.
2018-12-23 13:48:04 +01:00
Florian Diebold
3899898d75 Parse integer / float types 2018-12-23 13:48:04 +01:00
Florian Diebold
3ac605e687 Add beginnings of type infrastructure 2018-12-23 13:48:04 +01:00
DJMcNab
a0e8538129 Improve comment 2018-12-23 11:10:12 +00:00
bors[bot]
d77520fde3 Merge #310
310: When constructing a crate graph, detect and forbid cycles. r=matklad a=gfreezy

fixed #300

Co-authored-by: gfreezy <gfreezy@gmail.com>
2018-12-22 14:48:18 +00:00
gfreezy
c0add813e9 mark as visited on entry instead of left 2018-12-22 22:40:41 +08:00
Aleksey Kladov
5c7e8f47a8 less chatty logging 2018-12-22 15:09:08 +03:00
Aleksey Kladov
90f20f8c53 less verbose debug 2018-12-22 12:38:24 +03:00
Aleksey Kladov
94241cec04 less verbose debug for library data 2018-12-22 11:57:42 +03:00
Aleksey Kladov
2639997973 log times 2018-12-22 11:53:20 +03:00
Aleksey Kladov
49e746b010 completion uses hir scopes 2018-12-22 11:01:03 +03:00
gfreezy
0267df3815 not visit the same crateId only once 2018-12-22 15:30:58 +08:00
bors[bot]
4e4ca27eab Merge #319
319: Completion icons r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-21 23:28:47 +00:00
Aleksey Kladov
ea763c73b8 fix snippet icon 2018-12-22 02:28:09 +03:00
Aleksey Kladov
498e3a6846 binding icon 2018-12-22 02:24:59 +03:00
Aleksey Kladov
8e056ef042 debug pring 2018-12-22 02:23:25 +03:00
Aleksey Kladov
97cb463c9b moar icons 2018-12-22 02:20:14 +03:00
bors[bot]
e4d0930d9c Merge #316
316: Fix handling of nested self in paths r=matklad a=DJMcNab

See https://github.com/rust-analyzer/rust-analyzer/issues/231#issuecomment-442449505.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-21 23:19:14 +00:00
Aleksey Kladov
238b52358d more icons 2018-12-22 02:03:18 +03:00
DJMcNab
bb1ee2f13a Move the self handling from directly inside the loop 2018-12-21 23:01:16 +00:00
Aleksey Kladov
f1f2804c71 move completion items to conv 2018-12-22 01:59:32 +03:00
DJMcNab
1dffbe5c37 Remove TODO on self_hosting_parsing
This improving this code is not a good use of people-time, and this
might be the most performant approach nonwithstanding
an api for this use case being added to walkdir
2018-12-21 22:44:31 +00:00
Aleksey Kladov
328d123f5b specify completion item kind 2018-12-22 01:42:26 +03:00
Aleksey Kladov
284e894069 cleanup 2018-12-22 01:42:26 +03:00
Aleksey Kladov
25dda42f37 introduce ComletionItemKind 2018-12-22 01:42:26 +03:00
Aleksey Kladov
ebb584ce66 rename completion kind 2018-12-22 01:42:26 +03:00
DJMcNab
4dbf71d332 Remove uneeded todo in lexer 2018-12-21 22:41:09 +00:00
DJMcNab
d8d60215da Fix handling of nested self in paths 2018-12-21 22:29:59 +00:00
bors[bot]
184665ff9b Merge #315
315: Split completion into manageable components r=matklad a=matklad

The main idea here is to do completion in two phases:

* first, we figure out surrounding context
* then, we run a series of completers on the given context. 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-21 22:04:32 +00:00
Aleksey Kladov
2ae87ffc9a cleanup 2018-12-22 01:03:58 +03:00
Aleksey Kladov
a8e04a7028 docs 2018-12-22 01:01:40 +03:00
Aleksey Kladov
200cc0a1e3 rename tests 2018-12-22 00:55:20 +03:00
Aleksey Kladov
ccca5aae43 scope-based copmletions on original file 2018-12-22 00:52:02 +03:00
Aleksey Kladov
2136e75c0b move path completion to a separate component 2018-12-21 23:04:56 +03:00
Aleksey Kladov
2351308d92 remove explicit serde_derive 2018-12-21 22:39:59 +03:00
Aleksey Kladov
67ac0a423f join lines collapses use_trees 2018-12-21 21:06:01 +03:00
Aleksey Kladov
cbe67339df more completion components 2018-12-21 20:55:00 +03:00
Aleksey Kladov
c2bf174e9c Start splitting completion into components 2018-12-21 20:25:29 +03:00
DJMcNab
bd5a358910 Fix where clauses using fully qualified path syntax 2018-12-21 17:20:38 +00:00
DJMcNab
380733d6d0 Undo the previous mistaken change and make publish_decorations optional
See https://github.com/Microsoft/language-server-protocol/issues/567
for motivations to not require `InitializationOptions`

TODO: Check if there are any other protocol extensions
which should be disabled if not implemented on the client
2018-12-21 17:00:31 +00:00
Aleksey Kladov
e086cc8db5 hide empty changes 2018-12-21 19:13:26 +03:00
Aleksey Kladov
12810b93c5 wip 2018-12-21 19:10:07 +03:00
Aleksey Kladov
9de3a45be6 add tests for pd 2018-12-21 18:53:00 +03:00
Aleksey Kladov
a5987bd715 show debug repr of literals 2018-12-21 18:49:52 +03:00
Aleksey Kladov
45232dfa68 organize completion tests better 2018-12-21 18:13:21 +03:00
gfreezy
66d15bb2da add #[cfg(test)] 2018-12-21 22:45:38 +08:00
gfreezy
77eaa208ed rename to dfs_find 2018-12-21 22:30:41 +08:00
gfreezy
792dabc0a6 When constructing a crate graph, detect and forbid cycles.
fixed #300
2018-12-21 22:27:04 +08:00
Aleksey Kladov
d4ef07b235 use completions in API 2018-12-21 15:50:07 +03:00
Aleksey Kladov
ba0072401c use Completions to collect completions 2018-12-21 15:46:01 +03:00
Aleksey Kladov
052e20162a docs 2018-12-21 15:34:11 +03:00
Aleksey Kladov
0ce82516c1 introduce Completions 2018-12-21 15:32:29 +03:00
Aleksey Kladov
4092b8d0b5 make compleion item details private 2018-12-21 15:19:46 +03:00
Aleksey Kladov
b5c5995bf1 use builder interface for completion item 2018-12-21 14:38:41 +03:00
Aleksey Kladov
b0ff6176ed flip params 2018-12-21 14:02:51 +03:00
Aleksey Kladov
74406ca8ea introduce completion_item module 2018-12-21 14:02:14 +03:00
bors[bot]
463e5af3f2 Merge #306
306: Finish weird exprs r=DJMcNab a=DJMcNab

Fix #290.

Note that I'm not certain my use of `p.nth(1) == Ident` is entirely consistent with `libsyntax` - in the original, [`is_union_item`](9622f9dc47/src/libsyntax/parse/parser.rs (L4593-L4596)) uses `t.is_ident() && !t.is_reserved_ident()`, whereas we effectively only do `is_ident`. However, I cannot find the definition of `is_reserved_ident` (even searching the rust repository only gives uses, no definitions), so this will have to do unless someone else can find it :|.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-21 10:04:00 +00:00
DJMcNab
9beee92500 Add comment about the source of the weird_exprs test 2018-12-21 10:03:02 +00:00
Aleksey Kladov
fd927ea3a9 use root-relative paths 2018-12-21 12:30:28 +03:00
Aleksey Kladov
b5b44659a4 edits use source-root API 2018-12-21 12:18:14 +03:00
Aleksey Kladov
0063f03e86 hide atom edits a bit 2018-12-21 11:52:32 +03:00
Aleksey Kladov
164d53b22f better debug impls 2018-12-21 11:49:18 +03:00
Aleksey Kladov
aa628f4749 fix SourceFileEdit name 2018-12-21 11:15:23 +03:00
Aleksey Kladov
b7d8bf1262 tweak canceled message 2018-12-21 11:08:43 +03:00
bors[bot]
f1fafeee02 Merge #305 #307
305: Fold curly blocks r=matklad a=matklad



307: ⬆️ 1.31.1 r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-20 19:58:10 +00:00
Aleksey Kladov
2956e81295 ⬆️ 1.31.1 2018-12-20 22:57:38 +03:00
DJMcNab
da6be9fdda Add weird_exprs test 2018-12-20 19:47:29 +00:00
DJMcNab
55ebe449c9 Fix parsing of contextual_keyword union 2018-12-20 19:46:03 +00:00
Aleksey Kladov
23b040962f fold curly blocks 2018-12-20 22:43:06 +03:00
Aleksey Kladov
8d7e8a175e generalize folding tests
By using xml-like tags, we will be able to test nested foldings.
2018-12-20 22:30:30 +03:00
DJMcNab
a349db7178 Run gen-tests 2018-12-20 19:10:37 +00:00
DJMcNab
1d1950336f Use a better way of skipping SEMIs 2018-12-20 19:07:11 +00:00
DJMcNab
dc1c64f5b9 Support a blank expression before a semicolon 2018-12-20 19:07:11 +00:00
DJMcNab
0ffba1e896 Fix broken test is deleted comment 2018-12-20 17:29:26 +00:00
DJMcNab
134fe4f566 Fix the tests and fix the precommit hook 2018-12-20 16:45:54 +00:00
DJMcNab
466885aa5b Fix missing DOTDOTEQs 2018-12-20 16:22:13 +00:00
DJMcNab
f35151afed Don't require a command before EQ in a where clause 2018-12-20 15:50:42 +00:00
DJMcNab
84ff52390d Rename test_fail to test_err 2018-12-20 15:09:57 +00:00
DJMcNab
63ca8bc91a Change parser tests dir to inline/ok and inline/err 2018-12-20 15:09:22 +00:00
DJMcNab
e2a7e94518 Ensure that the parser tests pass or fail correctly 2018-12-20 13:33:00 +00:00
bors[bot]
346456f59f Merge #301
301: Fix break in a condition r=matklad a=DJMcNab

The part of fixing #290.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-20 12:41:55 +00:00
DJMcNab
27e814e182 Simplify NO_BLOCK testing 2018-12-20 12:28:59 +00:00
DJMcNab
70e5fb98a0 Disable highlighting if disabled
This isn't working properly because we don't dynamically disable or enable it

TODO: work out why highlighting can be enabled mid session.

TODO: Improve settings handling
2018-12-20 12:16:44 +00:00
Aleksey Kladov
c96011833c extend comment 2018-12-20 14:35:37 +03:00
DJMcNab
5205c016e9 Fix ambiguity with if break
Brought up by #290
2018-12-20 11:35:02 +00:00
Aleksey Kladov
bb2bafb606 docs for input queries 2018-12-20 14:12:47 +03:00
bors[bot]
d8c6b8d999 Merge #297
297: Use ContentModified error code r=matklad a=matklad

25679c2e4b

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-20 09:23:27 +00:00
Aleksey Kladov
b2f2621c17 Use ContentModified error code
25679c2e4b
2018-12-20 12:20:28 +03:00
Aleksey Kladov
a084412f06 set symbol index as const 2018-12-20 12:15:38 +03:00
Aleksey Kladov
6782fe2a5b Treat 2018-12-20 12:15:38 +03:00
Aleksey Kladov
97812c192a Restore library symbols 2018-12-20 12:15:38 +03:00
Aleksey Kladov
2d4582bfc6 fixme comment 2018-12-20 12:15:38 +03:00
Aleksey Kladov
2caac99ef3 resolve paths across crates 2018-12-20 12:15:38 +03:00
Aleksey Kladov
590bd5f849 workaround across-crate resolve bugs 2018-12-20 12:15:38 +03:00
Aleksey Kladov
2fe41574a1 fix tests 2018-12-20 12:15:38 +03:00
Aleksey Kladov
e6465e7e2a index all local crates 2018-12-20 12:15:38 +03:00
Aleksey Kladov
51fec4ef84 fix the test 2018-12-20 12:15:38 +03:00
Aleksey Kladov
1b946ef8a6 File can be opened before the root is scanned 2018-12-20 12:15:38 +03:00
Aleksey Kladov
7b6bafa631 fix syc 2018-12-20 12:15:38 +03:00
Aleksey Kladov
a5ef8ad05b swtich lsp server to vfs 2018-12-20 12:15:38 +03:00
Aleksey Kladov
6a755ed83a remove more imports 2018-12-20 12:15:38 +03:00
Aleksey Kladov
79596abcaf dead import 2018-12-20 12:15:38 +03:00
Aleksey Kladov
26dcc70129 fix hir mock 2018-12-20 12:15:38 +03:00
Aleksey Kladov
18aac1df45 kill file resolver 2018-12-20 12:15:38 +03:00
Aleksey Kladov
85290bc134 switch analysis to vfs 2018-12-20 12:15:38 +03:00
Aleksey Kladov
815a0e5778 doc comment 2018-12-20 12:15:38 +03:00
Aleksey Kladov
d0bab735c8 add root & path info to remove event 2018-12-20 12:15:38 +03:00
Aleksey Kladov
b6ce7a6d34 make it compile 2018-12-20 12:15:38 +03:00
Aleksey Kladov
dea1a69e1c remove relpath from input 2018-12-20 12:15:38 +03:00
Aleksey Kladov
cb6205c09d use relpaths for module resolve 2018-12-20 12:15:38 +03:00
Aleksey Kladov
a422d480a1 implement vfs events handling 2018-12-20 12:15:38 +03:00
Aleksey Kladov
e69b05781f add io::Task 2018-12-20 12:15:23 +03:00
Aleksey Kladov
99561cf2f2 Add type alias 2018-12-20 12:15:23 +03:00
Aleksey Kladov
2ae05a6163 vfs crate scaffold 2018-12-20 12:15:23 +03:00
Aleksey Kladov
7509901fa0 wip 2018-12-20 12:15:23 +03:00
Jeremy A. Kolb
93cf39d968 Bump languageserver-types to 0.53.0 to support LSP 3.14.0
See: https://microsoft.github.io/language-server-protocol/specification#version_3_14_0
2018-12-19 17:32:44 -05:00
bors[bot]
ef1e107df1 Merge #273
273: Add a test to ensure that we can parse each file r=matklad a=DJMcNab

Note that this has a non-spurious failure in ra_analysis/src/mock_analysis.

Probably fixes #195.

If my understanding is correct, fixes #214 and fixes #225.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-19 21:22:00 +00:00
DJMcNab
a3b842fb8b Add tests and only traverse in the crates directory 2018-12-19 21:19:32 +00:00
DJMcNab
db67741430 Move is_block to lower in the call tree 2018-12-19 20:55:24 +00:00
DJMcNab
def0a95d35 Revert "Revert to f6f7c5"
This approach is correct, but it needs an addition to Restrictions too

This reverts commit ad00d0c8a5f64142e6636e8b048204c8f8982f4a.
2018-12-19 20:12:18 +00:00
DJMcNab
4dce66ad31 Fix handling of structs in match arms 2018-12-19 20:12:18 +00:00
DJMcNab
cd8e33fb7e Revert to f6f7c5 2018-12-19 20:12:18 +00:00
DJMcNab
7a8560ba38 Fix expression parsing by bailing out upon a macro block being found
TODO: Fix this when the block like macro is in expression position

E.g. `test(test!{})` currently parses
2018-12-19 20:12:18 +00:00
DJMcNab
97e70bf50f Possibly fix #225 2018-12-19 20:12:18 +00:00
DJMcNab
29bf389034 Actually fix at_ts doc comment (committed wrong file :P) 2018-12-19 20:12:18 +00:00
DJMcNab
012537bd6c Fix at_ts doc comment 2018-12-19 20:12:18 +00:00
DJMcNab
20bbe0127c Fix parsing of inclusive ranges (#214)
I'm not certain that this is correct, so extra eyes would be good
2018-12-19 20:12:18 +00:00
DJMcNab
0b77eec922 Add a test to ensure that we can parse each file
Note that this has a non-spurious failure in ra_analysis/src/mock_analysis
2018-12-19 20:12:18 +00:00
Aleksey Kladov
1c5ce7a868 File module source does not depend on syntax 2018-12-19 01:51:05 +03:00
Aleksey Kladov
d20d788571 disable gc for now 2018-12-19 01:10:03 +03:00
Aleksey Kladov
e7aa17b560 Gc syntax trees after every modification 2018-12-19 00:35:13 +03:00
Aleksey Kladov
d05790b947 Work around a bug
cc #288
2018-12-18 14:58:54 +03:00
Aleksey Kladov
193992fd14 move thread worker to a separate crate 2018-12-18 12:52:17 +03:00
Andrew Chin
8b1e667077 By default, log only to stderr, and not to disk.
This fixes a common problem when running under VS Code, the user
doesn't have permissions to create a `log` directory in the CWD.

The old behavior can be re-enabled by setting RA_INTERNAL_MODE=1
2018-12-17 17:22:30 -05:00
Roland Ruckerbauer
d0f1334226 Fixed cast expression parsing in ra_syntax.
The cast expression expected any type via types::type_() function,
but the language spec does only allow TypeNoBounds (types without direct extra bounds
via `+`).

**Example:**

```rust
fn test() {
	6i8 as i32 + 5;
}
```

This fails, because the types::type_() function which should parse the type after the
as keyword is greedy, and takes all plus sign after path types as extra.

My proposed fix is to replace the not implemented `type_no_plus()` just calls (`type_()`)
function, which is used at several places. The replacement is `type_with_bounds_cond(p: &mut Parser, allow_bounds: bool)`, which passes the condition to relevant sub-parsers.

This function is then called by `type_()` and the new public `type_no_bounds()`.
2018-12-17 17:26:24 +01:00
Aleksey Kladov
8d42deeac3 fix installation on windows 2018-12-17 11:26:41 +03:00
Bernardo
0527e3b283 rename Edit to TextEdit and AtomEdit to AtomTextEdit 2018-12-11 19:07:17 +01:00
Bernardo
7344d28768 extract AtomEdit and Edit into new ra_text_edit crate 2018-12-10 22:09:12 +01:00
Bernardo
a062d844c2 use \b as word boundary 2018-12-09 15:50:56 +01:00
bors[bot]
3725276554 Merge #271
271: Implement format hook r=matklad a=DJMcNab

Tentatively: fixes #155.

However, this does add all changes in staged files, which might not be desirable. However, I think we can't solve that without explicit support in rustfmt for it, so it should be fine.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-09 12:44:58 +00:00
DJMcNab
cbce28a348 Reimplement format-hook using a rust binary 2018-12-09 12:27:13 +00:00
Aleksey Kladov
b9c17a6001 Answer canceled requests 2018-12-09 14:43:02 +03:00
Aleksey Kladov
5004cb928b verbose assertions in SourceFileItems 2018-12-09 14:21:54 +03:00
Aleksey Kladov
7784c7a701 resolve extern crates propertly 2018-12-09 13:49:54 +03:00
DJMcNab
279ff4927a Update hook to not add unstaged files 2018-12-09 10:37:04 +00:00
Aleksey Kladov
e89da32bb7 move tests to separate file 2018-12-09 13:33:16 +03:00
Aleksey Kladov
6a16d3fb0b WIP: resolve across crates 2018-12-09 13:33:16 +03:00
Aleksey Kladov
8b9ff46b37 make resolver fields private 2018-12-09 13:33:16 +03:00
Aleksey Kladov
74fe581061 return dependencies with names 2018-12-09 13:33:16 +03:00
Aleksey Kladov
961cae7e53 thread info about dep names 2018-12-09 13:33:16 +03:00
Aleksey Kladov
ca7e5905c1 more crate boilerplate 2018-12-09 13:33:16 +03:00
Aleksey Kladov
9c6c7ec2da hir::Crate boilerplate 2018-12-09 13:33:16 +03:00
Aleksey Kladov
9b1356464a propagate deps to CrateGraph 2018-12-09 13:33:16 +03:00
Aleksey Kladov
32c067f8c9 track deps in project model 2018-12-09 13:33:16 +03:00
DJMcNab
e823db0698 Implement and test format hook 2018-12-09 10:29:13 +00:00
Aleksey Kladov
159525b120 Check Fileid in SourceFileMap 2018-12-09 13:18:46 +03:00
Aleksey Kladov
13100da7a2 switch threadpool back from rayon to threadpool
rayon does not replenish the pool when the thread panics, but we must
be reselient to bugs.
2018-12-09 13:13:36 +03:00
bors[bot]
904438e993 Merge #267
267: Fix the extend keybinding r=DJMcNab a=DJMcNab

Make the extend selection keybinding less annoying for users not used to Injelli-J (myself included). Also fixes a minor style issue and runs `npm update`.

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-09 09:09:07 +00:00
DJMcNab
bb0c2eb8d9 Fix cargo format component name and run rustfmt 2018-12-09 09:08:10 +00:00
DJMcNab
12addc6233 Add package command and upgrade event-stream 2018-12-08 21:09:32 +00:00
Bernardo
6fb267f5da find next whitespace or begining or end 2018-12-08 20:53:03 +01:00
bors[bot]
97b07ac393 Merge #265
265: Refactor symbol resolve API r=matklad a=matklad

Introduce ReferenceResolution to avoid nesting to many non-nominal
types.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-08 18:20:11 +00:00
Aleksey Kladov
7fd6a41127 Refactor symbol resolve API
Introduce ReferenceResolution to avoid nesting to many non-nominal
types.
2018-12-08 21:18:29 +03:00
bors[bot]
51f669606c Merge #263
263: New modules r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-08 17:55:17 +00:00
Aleksey Kladov
7a79cde107 account for new layout when collecting tests 2018-12-08 20:54:44 +03:00
bors[bot]
5ad7547ce2 Merge #264
264: check for empty range when extending in comment r=matklad a=vemoo

fix for #140 

Co-authored-by: Bernardo <berublan@gmail.com>
2018-12-08 17:43:15 +00:00
Bernardo
c22e901403 check for empty range when extending in comment 2018-12-08 18:26:19 +01:00
Aleksey Kladov
4cbc902fcc grand module rename 2018-12-08 19:30:35 +03:00
Aleksey Kladov
93c0b7d794 resolve 2018 style modules 2018-12-08 19:28:35 +03:00
Aleksey Kladov
e096867ada reformat 2018-12-08 19:28:24 +03:00
DJMcNab
f88e0700e6 Add a better text for hover and stop duplicating work done in approximatelly_resolve_symbol 2018-12-08 19:28:10 +03:00
DJMcNab
6d548d944f Fix typo in comment 2018-12-08 19:28:10 +03:00
DJMcNab
89cf7d8743 Clarify and correct comment about multi_byte_tokens 2018-12-08 19:28:10 +03:00
DJMcNab
3d3026dc60 Fix the range of a hover request to be more in line with prior art 2018-12-08 19:28:10 +03:00
Florian Diebold
29793e7de9 Add test for code actions 2018-12-06 21:32:15 +01:00
Florian Diebold
1dfd06fc8a Use json comparison code from cargo for heavy tests 2018-12-06 21:32:15 +01:00
Aleksey Kladov
28ddecf6c9 modernize even more 2018-12-06 21:16:37 +03:00
Aleksey Kladov
f6e8b376d1 modernize more 2018-12-06 21:03:39 +03:00
Aleksey Kladov
e477b87455 drop extern crates 2018-12-06 20:50:16 +03:00
Aleksey Kladov
1761a7d213 modernize some files 2018-12-06 20:49:36 +03:00
Aleksey Kladov
49324ee566 modernize some code 2018-12-06 20:42:03 +03:00
bors[bot]
25cf2349ab Merge #256
256: Improve/add use_item documentation r=matklad a=DJMcNab

Adds some documentation to use_item explaining all code paths (use imports are hard, especially with the ongoing discussion of anchored v. uniform paths - see https://github.com/rust-lang/rust/issues/55618 for what appears to be the latest developments)

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-06 17:30:36 +00:00
Aleksey Kladov
ce6c26a60e ⬆️ 1.31.0 🎉 2018-12-06 20:22:06 +03:00
DJMcNab
455ef940fe Update use path test 2018-12-05 22:08:00 +00:00
bors[bot]
e9060db158 Merge #253
253: Fix diagnostic fixes showing up everywhere r=matklad a=flodiebold

The LSP code action request always returned the fixes for all diagnostics anywhere in the file, because of a shadowed variable.


There's no test yet; I wasn't sure where to add it. I tried adding one in `heavy_tests`, but that's a bit uncomfortable because the code action response contains the (random) file paths. I could make it work, but wanted to ask beforehand what you think.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2018-12-05 22:04:34 +00:00
DJMcNab
5da245ec33 Fix a copy and pasting typo 2018-12-05 21:46:43 +00:00
DJMcNab
0a82d768c4 Improve/add the use_item documentation 2018-12-05 21:43:40 +00:00
Aleksey Kladov
0b1c0ee225 First step towards crate deps 2018-12-05 16:01:18 +03:00
Aleksey Kladov
7ef1697df8 make stuff private 2018-12-05 15:31:40 +03:00
Aleksey Kladov
db456749a8 make stuff private 2018-12-05 13:20:11 +03:00
Aleksey Kladov
4344264024 move fuzzy source binding to a separete mode 2018-12-05 13:16:20 +03:00
Aleksey Kladov
7960c8b276 restore index-based gotodef 2018-12-05 12:17:38 +03:00
Aleksey Kladov
54d053c881 minor 2018-12-04 23:52:14 +03:00
Aleksey Kladov
d8b0379e10 Add functions to DefId 2018-12-04 23:44:00 +03:00
Aleksey Kladov
947e3350e0 module-scoped defloc 2018-12-04 23:01:53 +03:00
Aleksey Kladov
45fce90349 ModuleSource is ItemSource 2018-12-04 22:46:23 +03:00
Aleksey Kladov
a9e4142f43 include file itself in SourceFileItems 2018-12-04 21:21:39 +03:00
Florian Diebold
d0811c4066 Fix diagnostic fixes showing up everywhere
The LSP code action request always returned the fixes for all diagnostics
anywhere in the file, because of a shadowed variable.
2018-12-02 20:58:16 +01:00
bors[bot]
244f9a142f Merge #250
250: Improve the suggestion for test functions r=DJMcNab a=DJMcNab

I haven't fully updated the previous commented out test - I don't know why it was commented out so some clarification would be welcome.

Co-authored-by: Daniel McNab <36049421+djmcnab@users.noreply.github.com>
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-02 14:58:32 +00:00
DJMcNab
224e0cee5a Fix formatting 2018-12-02 14:57:54 +00:00
bors[bot]
0bdf8deb77 Merge #252
252: Improve 'introduce variable' r=matklad a=flodiebold

 - make it possible to extract a prefix of an expression statement (e.g.
   `<|>foo.bar()<|>.baz()`)
 - don't turn the last expression in a block into a let statement
 - also fix a few typos

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2018-12-02 13:08:16 +00:00
Florian Diebold
2706456832 Improve 'introduce variable'
- make it possible to extract a prefix of an expression statement (e.g.
   <|>foo.bar()<|>.baz())
 - don't turn the last expression in a block into a let statement
2018-12-02 14:00:46 +01:00
Aleksey Kladov
bcc2342be6 Put derive back
It is used in this file
2018-12-02 12:27:30 +03:00
Aleksey Kladov
edd3768a44 Add derive after doc comments 2018-12-02 12:19:22 +03:00
Jeremy A. Kolb
ab7843c2d1 Put map back 2018-11-30 09:39:30 -05:00
Jeremy A. Kolb
f32dc71351 Clippy lints 2018-11-29 15:30:49 -05:00
Daniel McNab
3dea87b054 Format completion text properly 2018-11-28 22:02:53 +00:00
Daniel McNab
f988441904 Add tfn lookup and remove test prefix 2018-11-28 18:39:33 +00:00
Aleksey Kladov
70a7cb34ec switch to released id-arena 2018-11-28 21:03:30 +03:00
Daniel McNab
b47a88be9c Change the body and name of the test function completion 2018-11-28 17:04:03 +00:00
Aleksey Kladov
555483d397 drop comment 2018-11-28 16:27:43 +03:00
Aleksey Kladov
af7a0596f6 remove useless test hooks 2018-11-28 16:25:56 +03:00
Aleksey Kladov
d30bbfda74 make a bunch of stuff private 2018-11-28 16:24:06 +03:00
Aleksey Kladov
e89700f967 Move hir tests to hit 2018-11-28 16:19:01 +03:00
Aleksey Kladov
59e29aef63 Move hir to a separate crate 2018-11-28 04:09:44 +03:00
Aleksey Kladov
0e4b710af8 introduce hir crate 2018-11-28 03:42:26 +03:00
Aleksey Kladov
f66e5b6e6b move ids to HIR 2018-11-28 03:31:50 +03:00
Aleksey Kladov
11168c464c move db basics to ra_db
This should allow to move hir to a separate crate
2018-11-28 03:25:20 +03:00
Aleksey Kladov
b2de95879a generalize location interner 2018-11-28 02:49:28 +03:00
Aleksey Kladov
ec45dfea1e rename file_syntax -> source_file 2018-11-28 02:25:03 +03:00
Aleksey Kladov
65c064b2a9 introduce SymbolsDatabase 2018-11-28 02:22:25 +03:00
Aleksey Kladov
201aa7ea2a remove syntax ptr 2018-11-28 02:15:21 +03:00
Aleksey Kladov
c2abd17f57 Use ItemPtr for id 2018-11-28 02:13:52 +03:00
Aleksey Kladov
3922503205 ItemId based module source 2018-11-28 02:09:09 +03:00
Aleksey Kladov
9027a21f9a Introduce SourceItemId 2018-11-28 01:53:54 +03:00
Aleksey Kladov
00df339c41 rename 2018-11-28 01:48:43 +03:00
Aleksey Kladov
5e7f4202cf Move FileItems up 2018-11-28 01:45:36 +03:00
Aleksey Kladov
b9100d769a Remove unused dead code 2018-11-28 01:41:10 +03:00
Aleksey Kladov
4c9933c016 check_canceled is a method 2018-11-28 01:38:39 +03:00
Aleksey Kladov
806ea03b64 drop descriptor suffix, use hir:: instead 2018-11-28 01:22:17 +03:00
Aleksey Kladov
36b1d20c16 rename ModuleDescriptor -> Module 2018-11-28 01:19:55 +03:00
Aleksey Kladov
16f67ee384 move resolve_local to Scopes 2018-11-28 01:11:29 +03:00
Aleksey Kladov
7207eef716 rename FnDescriptior -> FnSignatureInfo 2018-11-27 23:48:24 +03:00
Aleksey Kladov
67de38ec7d move resolve_local_scope 2018-11-27 23:40:23 +03:00
Aleksey Kladov
93fae08261 make module module private 2018-11-27 23:35:53 +03:00
Aleksey Kladov
b7049ea543 move query definitions 2018-11-27 23:33:36 +03:00
Aleksey Kladov
90bc832b22 remove underscores 2018-11-27 23:05:33 +03:00
Aleksey Kladov
f14902f67b move hir db 2018-11-27 23:03:08 +03:00
Aleksey Kladov
109a7f3717 itroduce FunctionDescriptor 2018-11-27 22:58:09 +03:00
Aleksey Kladov
f4d0cb64fc rename descriptorsdb -> hirdb 2018-11-27 21:58:44 +03:00
Aleksey Kladov
d659b7a2f0 start descriptors -> hir rename 2018-11-27 21:45:42 +03:00
Aleksey Kladov
192e2bbb0e resolve_path works with DefIds 2018-11-27 19:56:03 +03:00
Aleksey Kladov
aa7fd563a4 use ctry 2018-11-27 18:45:16 +03:00
Aleksey Kladov
f4860870da scope-based resolve path 2018-11-27 18:25:35 +03:00
Aleksey Kladov
68f66e0f44 add db to resolve_path 2018-11-27 18:25:35 +03:00
Aleksey Kladov
5b0e347f89 Make resolve_path cancelable 2018-11-27 18:25:35 +03:00
Aleksey Kladov
6bb06addf8 don't use volatile queries
"volatile" means "changes every time". That is, all transitive
rev-deps of volatile queries will be executed every time. We actually
need "dependencies".
2018-11-27 17:39:58 +03:00
Aleksey Kladov
10f4d4b74c Make nameresolution resilient to reparsing
We now store item id's instead of local syntax ptrs, and item ids
don't change if you type inside a single function.
2018-11-27 15:02:06 +03:00
Aleksey Kladov
4d87799a4a implement file_items 2018-11-27 15:01:52 +03:00
Aleksey Kladov
16cdd126b6 add file items query 2018-11-27 15:01:52 +03:00
bors[bot]
8e37208040 Merge #244
244: Switch to id-arena r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-11-27 11:23:29 +00:00
Aleksey Kladov
ed023929d5 Switch to id-arena 2018-11-27 14:23:06 +03:00
Aleksey Kladov
6b1f30ade9 hack around nested libraries 2018-11-27 00:12:43 +03:00
Aleksey Kladov
b6fcd46278 Codify Arena pattern 2018-11-25 19:02:14 +03:00
Aleksey Kladov
ebc4e75253 switch back to the latest beta 2018-11-24 21:52:49 +03:00
Aleksey Kladov
955d2eea45 add test loggin API to db 2018-11-21 20:44:05 +03:00
Aleksey Kladov
e8c50f0915 Use : as a trigger character for completion
Note that VSCode asks for completion after *first* `:` as well:

    use crate:

we use hacks to protect against that, and to give completions only
after the second `:`.
2018-11-21 19:06:48 +03:00
Aleksey Kladov
edeec6a414 Complete paths after :: 2018-11-21 18:34:20 +03:00
Aleksey Kladov
7ffc7d3308 Move path completion to descriptors 2018-11-21 18:20:44 +03:00
Aleksey Kladov
11f19b7849 name res uses paths 2018-11-21 17:51:02 +03:00
Aleksey Kladov
5a87a24f82 move Path 2018-11-21 17:18:26 +03:00
Aleksey Kladov
18000ba864 docs 2018-11-21 17:07:44 +03:00
Aleksey Kladov
d47075af52 move path to descriptors 2018-11-21 16:16:54 +03:00
Aleksey Kladov
8954d4dc67 Introduce Import struct 2018-11-21 16:15:15 +03:00
Aleksey Kladov
82c088137a Remove import_resolutions
It's cheaper to re-query this info anyway
2018-11-21 16:02:34 +03:00
Aleksey Kladov
5a61b218f8 Pin to older beta
https://github.com/rust-lang/rust/issues/56128
2018-11-21 14:47:19 +03:00
Aleksey Kladov
049f8df93c switch completion to new scope 2018-11-21 12:57:05 +03:00
Aleksey Kladov
b70b6bce19 Move to top 2018-11-21 11:35:25 +03:00
Aleksey Kladov
ff75ad13a4 Measure time 2018-11-21 11:18:43 +03:00
Aleksey Kladov
02c4f82348 simple test for item map 2018-11-21 11:16:46 +03:00
Aleksey Kladov
36aad85138 add item map query 2018-11-21 00:39:50 +03:00
Aleksey Kladov
9bb11aee44 populate resolve from unresolved imports 2018-11-21 00:31:12 +03:00
Aleksey Kladov
aab71bff8e move to method 2018-11-20 23:36:53 +03:00
Aleksey Kladov
cc8163439f populate modules 2018-11-20 21:50:22 +03:00
Aleksey Kladov
1cf92c3e28 remember spans with paths 2018-11-20 21:17:14 +03:00
Aleksey Kladov
c54b51fded add DefId 2018-11-20 21:12:15 +03:00
Aleksey Kladov
8086107b6a implement path conversion 2018-11-20 19:40:37 +03:00
Aleksey Kladov
bcdcfa9df2 Some import resolution boilerplate 2018-11-20 19:24:58 +03:00
Aleksey Kladov
5f8068cea8 make mod private 2018-11-20 18:34:10 +03:00
Aleksey Kladov
a2fdb41ace fix typo 2018-11-20 17:33:27 +03:00
Aleksey Kladov
8fc51501e0 Remove ModId 2018-11-20 17:23:17 +03:00
Aleksey Kladov
1913bedc2e Make more stuff private 2018-11-20 17:21:00 +03:00
Aleksey Kladov
a300fb68e2 Make most of modules impl private 2018-11-20 17:16:33 +03:00