Hirokazu Hata
d665acbbec
Implement array inference
2019-01-16 23:35:06 +09:00
Hirokazu Hata
4729a1b054
Update ARRAY_EXPR grammar
2019-01-16 23:22:14 +09:00
bors[bot]
d75a0368f5
Merge #536
...
536: Introduce variable semicolon block expr r=matklad a=yerke
Fix for https://github.com/rust-analyzer/rust-analyzer/issues/504
Feels a bit hacky...
Co-authored-by: Yerkebulan Tulibergenov <yerkebulan@gmail.com>
2019-01-16 06:20:09 +00:00
Yerkebulan Tulibergenov
67ddd33598
don't need SEMI any more
2019-01-15 20:29:37 -08:00
Yerkebulan Tulibergenov
de7c0f814c
delete unused fn
2019-01-15 20:28:01 -08:00
Yerkebulan Tulibergenov
4dd7ec94bc
use has_semi
2019-01-15 20:27:15 -08:00
Yerkebulan Tulibergenov
5e35f191fc
add has_semi to ExprStmt
2019-01-15 20:26:46 -08:00
Marcus Klaas de Vries
a2b6d3da30
Implement rudimentary type inference for unary operators
2019-01-16 00:04:39 +01:00
Aleksey Kladov
8338acfd3a
kill last cancelables
2019-01-15 21:17:10 +03:00
Aleksey Kladov
0bb170a277
remove Canceled from impl of ra_ide_api
2019-01-15 21:09:51 +03:00
Aleksey Kladov
05ba45c667
remove Canceled from API impl
2019-01-15 21:02:42 +03:00
Aleksey Kladov
02c3d2f78e
hir is cancelation free
2019-01-15 20:56:06 +03:00
Aleksey Kladov
8ba9c2d4ce
remove Cancelable from type inference
2019-01-15 20:54:18 +03:00
Aleksey Kladov
b871062e32
remove Cancelable from Ty
2019-01-15 20:43:37 +03:00
Aleksey Kladov
fafcd103d2
remove Cancelable from ids
2019-01-15 19:18:52 +03:00
Aleksey Kladov
490112dea1
remove Cancelable from nameres
2019-01-15 19:15:01 +03:00
Aleksey Kladov
18e9a710cd
remove Cancelable from fn_scopes
2019-01-15 19:04:49 +03:00
Aleksey Kladov
040a622c52
remove Cancelable from funciton body
2019-01-15 19:01:59 +03:00
Aleksey Kladov
f1367e0370
remove Cancelable from navigation target
2019-01-15 18:50:16 +03:00
Aleksey Kladov
9dd4099d93
remove Cancelable from static&const API
2019-01-15 18:45:01 +03:00
Aleksey Kladov
9446be2999
remove Cancelable from adt API
2019-01-15 18:43:25 +03:00
Aleksey Kladov
8af9a18660
remove Cancelable from Crate API
2019-01-15 18:33:26 +03:00
Aleksey Kladov
c159e414b4
remove Cancelable from Module API, part 2
2019-01-15 18:30:58 +03:00
Aleksey Kladov
ca52cf1ecd
remove Cancelable from Module API
2019-01-15 18:26:29 +03:00
Aleksey Kladov
fb012e5c1e
remove cancelable from symbols
2019-01-15 18:19:09 +03:00
Aleksey Kladov
11f3c8afb2
remove Cancelable from source binders
2019-01-15 18:13:49 +03:00
Aleksey Kladov
68ff52566d
remove Cancelable from module_tree_query
2019-01-15 17:55:15 +03:00
Aleksey Kladov
fedd320cf2
check_canceled does not return Result
2019-01-15 15:45:48 +03:00
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
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