Aleksey Kladov
d62ede8262
migrate ra_lsp_server to new rowan
2019-01-08 11:56:17 +03:00
Aleksey Kladov
3ffd5dd2a6
migrate ra_analysis to new rowan
2019-01-08 11:47:28 +03:00
Aleksey Kladov
da0b348ae9
migrate ra_hir to rowan 2.0
2019-01-08 11:28:42 +03:00
Aleksey Kladov
d6020f516f
migrate ra_cli to new rowan
2019-01-08 11:20:15 +03:00
Aleksey Kladov
fe53b28250
migrate ra_db to new rowan
2019-01-08 11:20:15 +03:00
Aleksey Kladov
b88775af7f
migrate ra_editor to rowan 0.2
2019-01-08 11:20:15 +03:00
Aleksey Kladov
b73c51ff9b
wrap TreePtr
2019-01-08 11:20:15 +03:00
Aleksey Kladov
5618c8ade1
regenerate
2019-01-08 11:20:15 +03:00
Aleksey Kladov
d91a98ec84
switch ra_syntax to new rowan API
2019-01-08 11:20:15 +03:00
Aleksey Kladov
55272f2023
update rowan
2019-01-08 11:20:15 +03:00
Marcus Klaas de Vries
e51d44a2de
Process explicit type hints for str, bool and char
2019-01-07 20:43:41 +01:00
Marcus Klaas de Vries
5d15dd70b0
Tidy up binary operator type inference; add test file
2019-01-07 20:39:23 +01:00
Marcus Klaas de Vries
7b0eaef580
Implement type inference for more binary operators
...
Mostly just for primitive numeric types such as u32 and f64. Not
yet a general solution using trait resolution.
2019-01-07 20:11:31 +01:00
Marcus Klaas de Vries
3238c06a5a
Add remaining binary operations to AST
2019-01-07 19:04:25 +01:00
Florian Diebold
7bb279b365
Implement autoderef for field accesses
2019-01-07 14:54:23 +01:00
bors[bot]
a6071c9f4c
Merge #442
...
442: WIP: indent on typing dot r=matklad a=simonvandel
Fixes #439 .
The unit test passes, but I can't seem to make VS code perform the action. The existing action on "=" doesn't work either on my end either though.
I didn't add any smart way of detecting the current indent level. Any ideas how I would do that?
Co-authored-by: Simon Vandel Sillesen <simon.vandel@gmail.com>
2019-01-07 06:26:09 +00:00
Simon Vandel Sillesen
f3c708ab7b
my formatting tool locally messes things up
2019-01-07 06:24:07 +01:00
Simon Vandel Sillesen
979dcf36e4
fix nits
2019-01-07 06:16:04 +01:00
Florian Diebold
d618b1f2ce
if let -> match
2019-01-07 01:10:29 +01:00
Florian Diebold
2dfb5e6ac0
Improve types for node_expr / node_pat
2019-01-07 00:05:19 +01:00
Florian Diebold
71f7d82e45
Introduce ArenaMap
2019-01-07 00:05:19 +01:00
Florian Diebold
cf49a11263
Sort ranges in type inference tests
...
Also rename the files to remove the numbers (they don't serve a purpose now that
there are only the data files).
2019-01-07 00:05:19 +01:00
Florian Diebold
6210e82041
Use HIR Expr for type inference
...
Now we can reuse the type inference inside a function when typing whitespace
etc. :)
2019-01-07 00:05:19 +01:00
Florian Diebold
a4e97f5a2b
Show types when hovering patterns as well
2019-01-06 22:53:09 +01:00
bors[bot]
31c1999505
Merge #440
...
440: Implement type inference for boolean operators r=flodiebold a=marcusklaas
Tried implementing the easiest part of https://github.com/rust-analyzer/rust-analyzer/issues/390 . Hope this is somewhat close to what the intent of the issue was. Found it surprisingly easy to find my way around the repository - it's well organized!
Very grateful for any pointers.
Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-06 21:28:36 +00:00
Marcus Klaas de Vries
82d9a77dad
Touch up type inference for boolean operators
...
Also try to infer its subexpressions and set type expectations
whenever possible.
2019-01-06 22:17:54 +01:00
Simon Vandel Sillesen
bbc044990a
formatting
2019-01-06 22:06:22 +01:00
Simon Vandel Sillesen
0be055072d
fix tests
2019-01-06 21:59:14 +01:00
Aleksey Kladov
8a3b489c2f
kill module source
2019-01-06 20:01:26 +03:00
Aleksey Kladov
733383446f
move submodule computationt to module_tree
2019-01-06 17:44:50 +03:00
Aleksey Kladov
17b2994b99
fix the test
2019-01-06 17:38:20 +03:00
Aleksey Kladov
5b0267ecf7
fix after rebase
2019-01-06 17:37:18 +03:00
Aleksey Kladov
fd4456d0ec
flatten module structure
2019-01-06 17:36:10 +03:00
Aleksey Kladov
5a505189a8
adjust comments
2019-01-06 17:35:57 +03:00
Aleksey Kladov
c303e6fbdf
fix ra_analysis to work with the new API
2019-01-06 17:35:57 +03:00
Aleksey Kladov
a7f4f7bfcc
split module source into decl/defin
2019-01-06 17:35:57 +03:00
Aleksey Kladov
9cb02fd931
kill old module
2019-01-06 17:35:57 +03:00
Aleksey Kladov
3c2cb89087
add parent & resolve_path
2019-01-06 17:35:29 +03:00
Aleksey Kladov
1836f4db35
make source cancelable
2019-01-06 17:35:29 +03:00
Aleksey Kladov
b37fba7136
make deps cancelable
2019-01-06 17:35:29 +03:00
Aleksey Kladov
61687b9db6
fix tests
2019-01-06 17:35:29 +03:00
Aleksey Kladov
8c4d277036
switch source-binders to Module
2019-01-06 17:35:29 +03:00
Aleksey Kladov
147b0f94e6
Start code_model::Module
2019-01-06 17:35:29 +03:00
Aleksey Kladov
9a820dc0ee
move crate to code_model_api
2019-01-06 17:35:29 +03:00
bors[bot]
eaf553dade
Merge #441
...
441: hir::Expr r=matklad a=flodiebold
Still a bit to do, but I already adapted `FnScopes` and thought I'd get feedback already.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-06 13:45:22 +00:00
Simon Vandel Sillesen
4f3bc42349
add more tests
2019-01-06 12:24:33 +01:00
Aleksey Kladov
bc3e732ec5
split_import intention correctly works with use trees
2019-01-06 12:48:33 +03:00
Simon Vandel Sillesen
b0ffa98a00
add "." as a trigger char on type formatting
2019-01-06 09:56:00 +01:00
Simon Vandel Sillesen
2e52b27e71
refactor
2019-01-06 09:41:11 +01:00
Simon Vandel Sillesen
bb8624dff6
format code
2019-01-06 08:08:23 +01:00
Simon Vandel Sillesen
cfaaf33069
rename unused variable
2019-01-06 07:56:02 +01:00
Florian Diebold
98957f4e6f
Add fn signature query
2019-01-06 01:13:31 +01:00
Simon Vandel Sillesen
f99398d9d5
indent on typing dot. fixes #439
2019-01-06 00:58:03 +01:00
Florian Diebold
e5a6cf8153
Various small code review improvements
2019-01-06 00:38:08 +01:00
Florian Diebold
8e3e5ab2c8
Make FnScopes use hir::Expr
...
This was a bit complicated. I've added a wrapper type for now that does the
LocalSyntaxPtr <-> ExprId translation; we might want to get rid of that or give
it a nicer interface.
2019-01-06 00:29:36 +01:00
Florian Diebold
136aba1cf3
Add HIR Expr machinery
2019-01-05 22:41:12 +01:00
Florian Diebold
a6f33b4ca5
Add test for invalidation of inferred types when typing inside function
...
This currently fails, but should work once we have hir::Expr.
2019-01-05 22:41:12 +01:00
Marcus Klaas de Vries
4fc233a02e
Implement type inference for boolean operators
2019-01-05 21:28:30 +01:00
Aleksey Kladov
01cf32c46e
fix tests
2019-01-05 21:09:11 +03:00
Aleksey Kladov
be84a112a7
show types in local variable hovers
2019-01-05 20:53:30 +03:00
Aleksey Kladov
ee461a2111
kill approximatelly_resolve_symbol
2019-01-05 20:00:03 +03:00
Aleksey Kladov
da32463cbf
inline goto_defention tests
2019-01-05 19:41:43 +03:00
Aleksey Kladov
c2a0f5e50f
move goto_defenition to a separate file
2019-01-05 19:30:49 +03:00
Aleksey Kladov
4551155073
introduce separate goto_defenition
2019-01-05 19:30:49 +03:00
Aleksey Kladov
ad2a5da259
kill accidentally added file
2019-01-05 19:30:42 +03:00
Aleksey Kladov
bdbdade036
move typeof to hover
2019-01-05 17:39:34 +03:00
Aleksey Kladov
9f44d4c56d
fold doc_comment into hover
2019-01-05 17:33:31 +03:00
Aleksey Kladov
3ad0037f90
move hover implementation to ra_analysis
2019-01-05 17:24:17 +03:00
Aleksey Kladov
2560a9e807
wip
2019-01-05 16:40:50 +03:00
bors[bot]
8d51b02362
Merge #414
...
414: textDocument/hover returns both type name and doc_text r=matklad a=h-michael
implement #389
Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-05 13:12:41 +00:00
Aleksey Kladov
79fd6b5c88
change visibility can change pub to pub(crate)
2019-01-05 15:28:07 +03:00
Aleksey Kladov
ea3504057e
split import assist
2019-01-05 13:56:33 +03:00
bors[bot]
481713a0e1
Merge #427
...
427: Remove extra space when joining lines in use items r=matklad a=alanhdu
Fixes #423 .
Co-authored-by: Alan Du <alanhdu@gmail.com>
2019-01-05 07:16:48 +00:00
Alan Du
19c641390d
Fix join_lines use_items right w/ and w/o comma
2019-01-04 22:06:36 -05:00
Alan Du
182ec76f13
Address join lines use items right }
2019-01-04 22:01:11 -05:00
Hirokazu Hata
341eb4ae87
Use both type_of and doc_text_for
2019-01-05 11:28:16 +09:00
bors[bot]
4a3ef8fe63
Merge #370
...
370: Self params & type r=matklad a=flodiebold
This implements type inference for `self`, so field completion for methods taking `self` works now.
- rename `IMPL_ITEM` to `IMPL_BLOCK` -- rustc calls the methods etc. inside an impl `ImplItem`s, and the impl itself doesn't define an item, so I thought this name was clearer.
- add HIR for impl blocks -- we collect all impls in a crate at once, so we can go from methods to containing impls, and since we will later also need to find all impls for a certain type (which may be anywhere in the crate, I think?). We could be more lazy here, but I don't know if it's worth the complexity.
- resolve `self` and `Self` during type inference
- refactor a bit in ty.rs as well
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-04 19:55:23 +00:00
Aleksey Kladov
6c8e54aaee
⬆️ salsa
2019-01-04 22:31:13 +03:00
Florian Diebold
e6aeabf96f
Rename ImplsInCrateQuery as well
2019-01-04 19:52:07 +01:00
Alan Du
fae8960554
Remove extra space when joining lines in use items
2019-01-04 13:39:43 -05:00
Florian Diebold
443ddb73c3
Do impl collection per module, not per crate
2019-01-04 19:29:53 +01:00
Florian Diebold
334ca0d9a7
Rename ImplBlock::target -> target_type, and add target_trait already
2019-01-04 19:16:39 +01:00
Florian Diebold
bb029cd29b
Rename traits::impl_item -> impl_block as well, as well as the tests
2019-01-04 19:15:15 +01:00
Florian Diebold
0ad13b9477
Add a test for self field completion
...
Needed to add a default crate graph in the analysis for that.
2019-01-04 19:14:52 +01:00
Florian Diebold
6ab0e292d2
Refactor a bit
2019-01-04 19:14:22 +01:00
Florian Diebold
538147bf94
Resolve the Self type
2019-01-04 19:13:50 +01:00
Florian Diebold
d4db61b9a1
Resolve the self parameter during type inference
2019-01-04 19:12:29 +01:00
Florian Diebold
111126ed3c
Type the self parameter
2019-01-04 19:10:50 +01:00
Florian Diebold
ae9530addc
Add HIR for impl blocks
...
Since we need to be able to go from def to containing impl block, as well as the
other direction, and to find all impls for a certain type, a design similar to
the one for modules, where we collect all impls for the whole crate and keep
them in an arena, seemed fitting. The ImplBlock type, which provides the public
interface, then consists only of an Arc to the arena containing all impls, and
the index into it.
2019-01-04 19:10:47 +01:00
Florian Diebold
226e31dae9
Add test for self type inference
2019-01-04 18:28:43 +01:00
Florian Diebold
fe6c4115f6
Rename ImplItem to ImplBlock
...
rustc uses the name ImplItem for items in impls, not the impl {} block itself,
which could lead to confusion.
2019-01-04 18:28:36 +01:00
Aleksey Kladov
3fe6f422f9
remove id arena
2019-01-04 16:58:10 +03:00
Aleksey Kladov
291d578938
extract area to a crate
2019-01-04 16:58:10 +03:00
csmoe
a0ef196d04
add mod doc comments test in ast
2019-01-04 21:51:45 +08:00
csmoe
f604ff5b2f
parse doc comment for items
2019-01-04 21:29:00 +08:00
csmoe
8a6d6ac132
add mod doc comment test
2019-01-04 21:28:09 +08:00
bors[bot]
6295bbe6ec
Merge #391
...
391: docing parser methods r=csmoe a=csmoe
Co-authored-by: csmoe <csmoe@msn.com>
2019-01-04 04:36:40 +00:00
csmoe
58139c558a
consume trivias for type/const def
2019-01-04 12:22:57 +08:00
csmoe
df591a1e48
doc parsing events
2019-01-04 12:21:47 +08:00
Aleksey Kladov
d61707b4e1
index stuff produced by macros
2019-01-03 21:29:17 +03:00
Aleksey Kladov
ebd7c04faa
construct index from symbols directly
2019-01-03 21:29:05 +03:00
Aleksey Kladov
cd32177a25
don't create many compilation units for tests
2019-01-03 20:15:12 +03:00
bors[bot]
8a24f25482
Merge #419
...
419: file-id-to-symbol r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-03 16:56:08 +00:00
Aleksey Kladov
9bb2a74256
embed file_id into FileSymbol
2019-01-03 19:55:34 +03:00
Aleksey Kladov
233b170e83
add pub(crate) works for named fields
2019-01-03 19:37:41 +03:00
bors[bot]
33924c0939
Merge #416
...
416: assist-builder r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-03 16:08:52 +00:00
Aleksey Kladov
6be39ba758
fix the test
2019-01-03 19:08:24 +03:00
Aleksey Kladov
a4635a199b
more enterprisey assists API
2019-01-03 18:59:17 +03:00
Bernardo
7d9e02e5a2
fix tests
2019-01-03 14:43:47 +01:00
Bernardo
3ab328b49a
use lsp WorkspaceEdit instead of custom source_file_edits and file_system_edits
2019-01-03 14:20:15 +01:00
Aleksey Kladov
a5935687cb
split assists over several files
2019-01-03 15:21:49 +03:00
Aleksey Kladov
5323e59996
rename code-actions -> assists
2019-01-03 15:21:31 +03:00
Aleksey Kladov
0a80d9685a
visibility owner
2019-01-03 15:21:31 +03:00
Hirokazu Hata
6ee7788513
Return type name when doc_text_for returns nothing
2019-01-03 21:15:23 +09:00
Aleksey Kladov
3e764f97eb
hardcode vec macro
2019-01-03 14:48:23 +03:00
bors[bot]
d29e98dd97
Merge #409
...
409: Add Analysis#teype_of test r=matklad a=h-michael
Co-authored-by: Hirokazu Hata <h.hata.ai.t@gmail.com>
2019-01-03 10:06:32 +00:00
Hirokazu Hata
4363e7b9b2
Deive type_of test from tests
2019-01-03 19:04:42 +09:00
Aleksey Kladov
8d61853509
docs
2019-01-03 12:57:30 +03:00
Hirokazu Hata
f99e96698c
Remove unnecessary mock functions
2019-01-03 18:27:02 +09:00
Aleksey Kladov
03ea6bcbff
use LocalPtr in navigation target
2019-01-03 12:26:40 +03:00
Aleksey Kladov
267a89bca2
use LocalSyntaxPtr for file symbol
2019-01-03 12:26:40 +03:00
Aleksey Kladov
f534d2132b
move some logic to navigation target
2019-01-03 12:26:40 +03:00
Aleksey Kladov
80a91e6735
add kind to LocalSyntaxPtr
2019-01-03 12:26:40 +03:00
Aleksey Kladov
f673529a33
explain that completion shouldn't do filtering
2019-01-03 12:23:15 +03:00
Hirokazu Hata
f5992964ed
Add Analysis#teype_of test
2019-01-03 12:07:20 +09:00
bors[bot]
54efd8204e
Merge #407
...
407: run r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 17:13:06 +00:00
Aleksey Kladov
28f6eedba5
simplify runnables
2019-01-02 20:12:38 +03:00
bors[bot]
4f30c45933
Merge #406
...
406: Simplify r=matklad a=matklad
Get rid of `AnalysisImpl` wrapper around salsa database. It was useful before we migrated by salsa, but it's long have been just a useless boilerplate.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 16:42:29 +00:00
Aleksey Kladov
ef08b6c084
fix compilation
2019-01-02 19:41:57 +03:00
Aleksey Kladov
5d483cb998
doctrings
2019-01-02 19:40:41 +03:00
Aleksey Kladov
08d1537468
get rid of AnalysisImpl
2019-01-02 19:20:56 +03:00
gfreezy
9672ae001e
extend selection inside a string literal should select a word first
2019-01-02 23:42:38 +08:00
Aleksey Kladov
e9b47dbb36
remove AnalysisHostImpl
2019-01-02 18:41:41 +03:00
Aleksey Kladov
2f22c861a9
remove some methods from analysis impl
2019-01-02 18:11:49 +03:00
Aleksey Kladov
a94530afb3
move world-symbols to file_symbols
2019-01-02 18:08:14 +03:00
bors[bot]
29d8bfb9c9
Merge #404
...
404: Move FileSymbol to ra_analysis r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-02 14:26:06 +00:00
Aleksey Kladov
76910639e6
fix tests
2019-01-02 17:25:28 +03:00
Aleksey Kladov
fb775a293d
make FileSymbol private
2019-01-02 17:11:04 +03:00
Aleksey Kladov
830abe0c1b
use navigation target in API
2019-01-02 17:09:39 +03:00
Aleksey Kladov
d25c89f760
introduce navigation target
2019-01-02 16:53:40 +03:00
Aleksey Kladov
a4b4fd7dc5
move symbols to ra_analysis
2019-01-02 16:29:08 +03:00
Aleksey Kladov
1076e82856
small rename
2019-01-02 16:00:35 +03:00
Aleksey Kladov
35b3fc02e0
comments
2019-01-02 16:00:01 +03:00
Aleksey Kladov
4fe0ec5497
rename
2019-01-02 12:49:47 +03:00
Aleksey Kladov
db8d293208
move macro id to ids
2019-01-02 00:37:36 +03:00
Aleksey Kladov
42cc77703b
move more stuff to ids
2019-01-02 00:30:00 +03:00
Aleksey Kladov
37ed2f35ba
rename MFileId -> HirFileId
2019-01-02 00:09:54 +03:00
Aleksey Kladov
9c65e61849
introduce ids module
2019-01-01 22:47:10 +03:00
Aleksey Kladov
fca1422ea3
add tests for macro generated items
2019-01-01 22:15:35 +03:00
Aleksey Kladov
756e878158
add items from macros to modules
2019-01-01 22:15:35 +03:00