Commit Graph

1404 Commits

Author SHA1 Message Date
bors[bot]
e8e82ce032 Merge #485
485: Add type inference for a bunch of primitives r=flodiebold a=marcusklaas

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

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

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



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

related #394

I'm sorry I'm late.

I try implementing array inference next.

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



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

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

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

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



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



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

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

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

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

Supports running individual and mod tests.

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

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

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

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



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



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

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

I think I resolved all the issues mentioned there.

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



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



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