Commit graph

2071 commits

Author SHA1 Message Date
Aleksey Kladov
dd45697e53 update salsa 2019-01-15 15:06:45 +03:00
bors[bot]
f6f2e89e7a Merge #546
546: replace `assert_dbg_eq` with Insta r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-15 11:18:56 +00:00
Aleksey Kladov
d79a9b17dc switch to insta for testing 2019-01-15 14:18:24 +03:00
Yerkebulan Tulibergenov
4149285bf5 add semi only if it wasn't present before or after 2019-01-15 01:21:04 -08:00
Jeremy A. Kolb
cd21f0eade Reveal the newly added source change in the editor. 2019-01-14 17:24:49 -05:00
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
bors[bot]
784ff638e5 Merge #538
538: update cargo_metadata r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-14 13:16:21 +00: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
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