Commit graph

2209 commits

Author SHA1 Message Date
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
bors[bot]
8caff4e034 Merge #537
537: switch to lsp-types r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-14 11:32:28 +00:00
Aleksey Kladov
7e5ab9b78c switch to lsp-types 2019-01-14 14:32:03 +03:00
bors[bot]
e465032daf Merge #534
534: Add visibility to hover r=matklad a=kjeremy



Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-14 10:34:48 +00: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
bors[bot]
a901cb4f34 Merge #533
533: target_selection_range is not nullable in the implementation r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 19:44:26 +00: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
bors[bot]
d3dfafd393 Merge #530
530: Fix some random typos r=matklad a=killercup



Co-authored-by: Pascal Hertleif <killercup@gmail.com>
2019-01-13 18:55:44 +00:00
Pascal Hertleif
f97a9921df Fix some random typos 2019-01-13 19:54:28 +01:00
bors[bot]
6fb13cd535 Merge #529
529: ⬆️ npm r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 18:43:40 +00:00
Aleksey Kladov
7642cf5fe7 ⬆️ npm 2019-01-13 21:43:13 +03:00
bors[bot]
4209022e5b Merge #527
527: goto defenition works for type-inferred methods r=flodiebold a=matklad

This uses type inference results for `goto method` functionality.

This is achieved by adding another map to `InferenceResult`. I wonder how we should handle this long-term... The pattern seems to be "we are doing some analysis, and we produce some stuff as a by-product, and IDE would like to use the stuff". Ideally, adding an additional bit of info shouldn't require threading it through all data structures. 

I kinda like how Kotlin deals with this problem. They have this [`BindingContext`](72e351a0e3/compiler/frontend/src/org/jetbrains/kotlin/resolve/BindingContext.java (L122)) thing, which is basically an [`AnyMap`](72e351a0e3/compiler/frontend/src/org/jetbrains/kotlin/resolve/BindingContext.java (L122)) of HashMaps. 

Deep in the compiler guts, they [record the info](ba6da7c40a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tasks/TracingStrategyForInvoke.java (L70-L75)) into the map, using a type key, a value key and a value. 

Then the IDE [reads this map](ba6da7c40a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantNotNullExtensionReceiverOfInlineInspection.kt (L64)) (via a [helper](ba6da7c40a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/util/callUtil.kt (L178-L180))). The stuff in between does not know that this type-key exists, unless it inspects it. 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 16:59:35 +00:00
Aleksey Kladov
eedc08300c goto defenition works for type-inferred methods 2019-01-13 18:56:57 +03:00
bors[bot]
8b985b427c Merge #526
526: fix indent caclulation r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 15:22:36 +00:00
Aleksey Kladov
884ce4a420 fix indent caclulation 2019-01-13 18:21:23 +03:00
Aleksey Kladov
c46e0300e6 note about performance 2019-01-13 17:13:54 +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
bors[bot]
bd2658de26 Merge #522
522: Tweak message shown for query fallback r=DJMcNab a=killercup

Small tweak for #518

Co-authored-by: Pascal Hertleif <killercup@gmail.com>
2019-01-13 12:43:35 +00: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
bors[bot]
9f2072d45f Merge #521
521: refresh docs r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-13 12:04:33 +00:00
Aleksey Kladov
04657292e0 refresh docs 2019-01-13 15:04:05 +03: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
Aleksey Kladov
afe5f26239 tweak readme 2019-01-13 13:51:26 +03: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
bors[bot]
883f1fc78a Merge #514
514: npm fix run r=matklad a=kjeremy



Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-13 07:53:39 +00:00
bors[bot]
40686722ba Merge #515
515: Fix typos r=matklad a=kjeremy



Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-13 06:58:06 +00:00
Jeremy Kolb
ecf9c203ed Fix typos 2019-01-12 20:40:30 -05:00
Jeremy Kolb
2a1cb52c99 npm fix run 2019-01-12 18:49:07 -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