Commit graph

2138 commits

Author SHA1 Message Date
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
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
5bf739c824 Move run_single into runnables 2019-01-12 13:54:08 -05:00
Paweł Zmarzły
ee80a92ed4 Do not recommend fetching whole repo for end users
`--depth 1` will make a shallow clone, of master branch only.
2019-01-12 20:41:06 +02: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
bors[bot]
52ec6edf55 Merge #506
506: Use --force when installing the VSIX. r=DJMcNab a=DJMcNab

This might fix the extension installation, or it might not.

https://github.com/Microsoft/vscode/issues/65897#issuecomment-451749900 says we need to increase the version on every install, but I can't work out why exactly.

@egamma, can you give us some more insight?

bors r+ - It can't do any harm anyway :).

Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-12 15:09:33 +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
bors[bot]
e9e397e705 Merge #501
501: Switch hover to use MarkupContent r=matklad a=kjeremy

MarkedString is deprecated

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-12 11:02:42 +00:00
Jeremy Kolb
f42f70b1d5 Switch hover to use MarkupContent
MarkedString is deprecated
2019-01-11 21:45:16 -05:00
bors[bot]
cca39ebc24 Merge #491
491: Fix assertion error in unification (hopefully) r=flodiebold a=flodiebold

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).

Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
2019-01-11 22:49:32 +00: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
bors[bot]
738c958a04 Merge #498
498: actually produce missing def kinds r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-11 18:08:00 +00: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