Commit Graph

1345 Commits

Author SHA1 Message Date
Aleksey Kladov
8a5f74a24f use location link in goto def 2019-01-11 16:06:22 +03:00
Aleksey Kladov
3aaf20bd6e return ref ranges from gotodef 2019-01-11 16:06:08 +03:00
Aleksey Kladov
f9ed8d4d23 envapsulate navigation target better 2019-01-11 16:01:57 +03:00
Aleksey Kladov
1d3d05d5d7 simplify 2019-01-11 16:01:57 +03:00
Aleksey Kladov
a5dd04078e reshuffle nones 2019-01-11 16:01:57 +03:00
Aleksey Kladov
7b14377965 refactor nav target 2019-01-11 16:01:57 +03:00
Aleksey Kladov
df6bbc6e42 Make from_syntax private 2019-01-11 16:01:57 +03:00
Aleksey Kladov
2aa125251e move nav to a separate file 2019-01-11 16:01:57 +03:00
Aleksey Kladov
f848aa97ab group feature modules 2019-01-11 16:01:57 +03:00
Aleksey Kladov
a1b661faec fine grained on typed tests 2019-01-11 15:48:06 +03:00
Aleksey Kladov
d9e70e3160 fix on-type offset 2019-01-11 15:05:40 +03:00
Aleksey Kladov
4aa632761f make on dot typed actually work 2019-01-11 14:57:19 +03:00
Aleksey Kladov
66d7adf1cb force serde in ra_syntax 2019-01-11 13:21:18 +03:00
Aleksey Kladov
4bf6b91b9d minor 2019-01-11 00:51:34 +03:00
Aleksey Kladov
cd00158b1d wire sysroot into crate graph 2019-01-11 00:51:34 +03:00
Aleksey Kladov
e35374ec7c special case std 2019-01-11 00:51:34 +03:00
Aleksey Kladov
8852408bfb use arena for sysroot 2019-01-11 00:51:34 +03:00
Aleksey Kladov
66fba88534 split module 2019-01-11 00:51:34 +03:00
Aleksey Kladov
e8923713c5 add sysroot boilerplate 2019-01-11 00:51:34 +03:00
bors[bot]
b6bc55f542 Merge #490
490: dont depend on tools from lsp-server r=matklad a=matklad



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

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

I think I resolved all the issues mentioned there.

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



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



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

![image](https://user-images.githubusercontent.com/1711539/50910524-0f146200-143f-11e9-84d6-0ba80761cd89.png)

r? @flodiebold 


Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-10 13:07:19 +00:00
bors[bot]
aef93c918e Merge #478
478: WIP: implement cancelation via unwinding r=matklad a=matklad

This uses https://github.com/salsa-rs/salsa/pull/107 to implement cancellation.

Now we can get rid of `Cancelable` wrapper from everywhere except the top-level analyzer library. 



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-10 12:51:58 +00:00
Aleksey Kladov
86bc898a2f explain why we use resume_unwind 2019-01-10 13:06:42 +03:00
Aleksey Kladov
f72c031eb9 implement RefUnwindSafe 2019-01-10 13:04:04 +03:00
Aleksey Kladov
64455ad701 use unwinding for cancelation 2019-01-10 12:20:32 +03:00
Hrvoje Ban
8384b2cc38 Extend selection for list items 2019-01-09 20:51:19 +01:00
Aleksey Kladov
cf20ecae9f unwind on cancel 2019-01-09 22:51:05 +03:00
Aleksey Kladov
56b2138d82 show field types in completion 2019-01-09 19:40:11 +03:00
Aleksey Kladov
ddf2a8a948 add completion detail 2019-01-09 19:40:11 +03:00
Aleksey Kladov
e8815b614e nicer trailing comma handling in types 2019-01-09 19:14:21 +03:00
bors[bot]
76b3985d70 Merge #473
473: Partial typo fix r=matklad a=marcusklaas

This fixes some typos. Mostly in documentation, but also some code is affected (`defenition` was used in a few method names).

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-09 12:20:05 +00:00
Marcus Klaas de Vries
0b8fbb4fad Fix typos in ARCHITECTURE.md and a number of crates
specifically: gen_lsp_server, ra_arena, ra_cli, ra_db, ra_hir
2019-01-09 01:17:09 +01:00
Aleksey Kladov
d18d8399f5 fuzz-lockfile 2019-01-09 01:58:25 +03:00
Aleksey Kladov
5609989368 more stable DefIds via bfs tree walking 2019-01-09 01:57:40 +03:00
Marcus Klaas de Vries
f8261d611a Fix typo defenition -> definition 2019-01-08 23:38:51 +01:00
Aleksey Kladov
2dc85619be one more invalidation test 2019-01-09 00:54:06 +03:00
Aleksey Kladov
bcb6fabd15 fix test naming 2019-01-09 00:49:21 +03:00
Aleksey Kladov
8f93e7b9a4 remove duplication in tests 2019-01-09 00:48:54 +03:00
Aleksey Kladov
0c62b1bb7a fix the docs 2019-01-08 22:45:52 +03:00
Aleksey Kladov
5b573deb20 fix usages after rename 2019-01-08 22:33:36 +03:00
Aleksey Kladov
6bca91af53 rename ra_analysis -> ra_ide_api 2019-01-08 22:30:56 +03:00
Aleksey Kladov
fa3c9ce392 fix usages after rename 2019-01-08 22:30:32 +03:00
Aleksey Kladov
1967884d68 rename ra_editor -> ra_ide_api_light 2019-01-08 22:17:36 +03:00
Aleksey Kladov
921689b70d kill text utils 2019-01-08 22:03:13 +03:00
Aleksey Kladov
f553837c1c upstream text-utils to text_unit 2019-01-08 21:50:04 +03:00
Aleksey Kladov
695294bbb9 ra_db is independent from editor 2019-01-08 21:03:42 +03:00
Aleksey Kladov
0c88360eb4 add comment 2019-01-08 21:01:41 +03:00
Aleksey Kladov
13301f284c ra_hir does not depend on ra_editor 2019-01-08 21:01:41 +03:00
Aleksey Kladov
702bdacb03 move node at offset to aglo already 2019-01-08 21:01:41 +03:00
Aleksey Kladov
1b82084a5f dont depend on ra_editor directly 2019-01-08 21:01:41 +03:00
Aleksey Kladov
ac92973a6c move function to code_model_api 2019-01-08 20:11:13 +03:00
Aleksey Kladov
141ab166cf switch to newer cargo-metadata 2019-01-08 19:36:09 +03:00
Aleksey Kladov
4fa972cffb simplify 2019-01-08 18:44:18 +03:00
Aleksey Kladov
6f02f176c8 simplify 2019-01-08 18:43:29 +03:00
Aleksey Kladov
db794abe66 kill FnSignatureInfo 2019-01-08 18:42:11 +03:00
Aleksey Kladov
ed4f13e5c7 remove FnSignatureInfo from hir 2019-01-08 18:38:34 +03:00
Aleksey Kladov
a3f74702d9 move tests 2019-01-08 18:33:19 +03:00
Aleksey Kladov
256ec6e8d4 introduce CallInfo 2019-01-08 18:27:44 +03:00
Aleksey Kladov
e6a4383bb4 move call-info to a separate file 2019-01-08 18:16:26 +03:00
Florian Diebold
946b0ba02c Fix name resolution across source roots
It was using the wrong name in that case.
2019-01-08 15:16:24 +01:00
Florian Diebold
d4b44a092f Fix use tree desugaring 2019-01-08 15:00:29 +01:00
bors[bot]
562b448f9e Merge #458
458: dont reexport module id r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-08 13:36:13 +00:00
Aleksey Kladov
544c63b58e dont reexport module id 2019-01-08 16:35:36 +03:00
Aleksey Kladov
821f5186ba use real signature in completion 2019-01-08 16:08:58 +03:00
Aleksey Kladov
d4c8310d05 switch interner to use arena 2019-01-08 15:53:32 +03:00
Aleksey Kladov
54e5c4f085 minimize visibility 2019-01-08 15:40:02 +03:00
Aleksey Kladov
5edcf313f6 move query impls to adt 2019-01-08 15:38:29 +03:00
Aleksey Kladov
64f202bdd7 move variant public api to api 2019-01-08 15:32:27 +03:00
Aleksey Kladov
2d0ab52212 move variants to API 2019-01-08 15:28:08 +03:00
Aleksey Kladov
71c7936932 minor 2019-01-08 15:23:56 +03:00
Aleksey Kladov
2d4dc22af8 move enum to code_model_api 2019-01-08 15:22:57 +03:00
Aleksey Kladov
e30c533eb6 move stuct to code_model_api 2019-01-08 15:19:37 +03:00
bors[bot]
3bb1cb7017 Merge #455
455: Import fixpoint loop for name resolution r=matklad a=flodiebold

This implements reexports, so only the glob import part of #231 remains.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-08 12:02:06 +00:00
Florian Diebold
dc186c0fcc Import fixpoint loop for name resolution 2019-01-08 12:53:31 +01:00
Aleksey Kladov
50d5e37481 convert some if-lets to match 2019-01-08 14:23:00 +03:00
Aleksey Kladov
96236a9be5 assist to convert if-let to match 2019-01-08 14:21:29 +03:00
Aleksey Kladov
fa6e0b0d38 itroduce trait for ast tokens 2019-01-08 12:23:10 +03:00
Aleksey Kladov
d62ede8262 migrate ra_lsp_server to new rowan 2019-01-08 11:56:17 +03:00
Aleksey Kladov
3ffd5dd2a6 migrate ra_analysis to new rowan 2019-01-08 11:47:28 +03:00
Aleksey Kladov
da0b348ae9 migrate ra_hir to rowan 2.0 2019-01-08 11:28:42 +03:00
Aleksey Kladov
d6020f516f migrate ra_cli to new rowan 2019-01-08 11:20:15 +03:00
Aleksey Kladov
fe53b28250 migrate ra_db to new rowan 2019-01-08 11:20:15 +03:00
Aleksey Kladov
b88775af7f migrate ra_editor to rowan 0.2 2019-01-08 11:20:15 +03:00
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