Commit Graph

317 Commits

Author SHA1 Message Date
Aleksey Kladov
109a7f3717 itroduce FunctionDescriptor 2018-11-27 22:58:09 +03:00
Aleksey Kladov
f4d0cb64fc rename descriptorsdb -> hirdb 2018-11-27 21:58:44 +03:00
Aleksey Kladov
d659b7a2f0 start descriptors -> hir rename 2018-11-27 21:45:42 +03:00
Aleksey Kladov
192e2bbb0e resolve_path works with DefIds 2018-11-27 19:56:03 +03:00
Aleksey Kladov
aa7fd563a4 use ctry 2018-11-27 18:45:16 +03:00
Aleksey Kladov
f4860870da scope-based resolve path 2018-11-27 18:25:35 +03:00
Aleksey Kladov
68f66e0f44 add db to resolve_path 2018-11-27 18:25:35 +03:00
Aleksey Kladov
5b0e347f89 Make resolve_path cancelable 2018-11-27 18:25:35 +03:00
Aleksey Kladov
6bb06addf8 don't use volatile queries
"volatile" means "changes every time". That is, all transitive
rev-deps of volatile queries will be executed every time. We actually
need "dependencies".
2018-11-27 17:39:58 +03:00
Aleksey Kladov
10f4d4b74c Make nameresolution resilient to reparsing
We now store item id's instead of local syntax ptrs, and item ids
don't change if you type inside a single function.
2018-11-27 15:02:06 +03:00
Aleksey Kladov
4d87799a4a implement file_items 2018-11-27 15:01:52 +03:00
Aleksey Kladov
16cdd126b6 add file items query 2018-11-27 15:01:52 +03:00
bors[bot]
8e37208040 Merge #244
244: Switch to id-arena r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-11-27 11:23:29 +00:00
Aleksey Kladov
ed023929d5 Switch to id-arena 2018-11-27 14:23:06 +03:00
Aleksey Kladov
6b1f30ade9 hack around nested libraries 2018-11-27 00:12:43 +03:00
Aleksey Kladov
b6fcd46278 Codify Arena pattern 2018-11-25 19:02:14 +03:00
Aleksey Kladov
955d2eea45 add test loggin API to db 2018-11-21 20:44:05 +03:00
Aleksey Kladov
edeec6a414 Complete paths after :: 2018-11-21 18:34:20 +03:00
Aleksey Kladov
7ffc7d3308 Move path completion to descriptors 2018-11-21 18:20:44 +03:00
Aleksey Kladov
11f19b7849 name res uses paths 2018-11-21 17:51:02 +03:00
Aleksey Kladov
5a87a24f82 move Path 2018-11-21 17:18:26 +03:00
Aleksey Kladov
18000ba864 docs 2018-11-21 17:07:44 +03:00
Aleksey Kladov
d47075af52 move path to descriptors 2018-11-21 16:16:54 +03:00
Aleksey Kladov
8954d4dc67 Introduce Import struct 2018-11-21 16:15:15 +03:00
Aleksey Kladov
82c088137a Remove import_resolutions
It's cheaper to re-query this info anyway
2018-11-21 16:02:34 +03:00
Aleksey Kladov
049f8df93c switch completion to new scope 2018-11-21 12:57:05 +03:00
Aleksey Kladov
b70b6bce19 Move to top 2018-11-21 11:35:25 +03:00
Aleksey Kladov
ff75ad13a4 Measure time 2018-11-21 11:18:43 +03:00
Aleksey Kladov
02c4f82348 simple test for item map 2018-11-21 11:16:46 +03:00
Aleksey Kladov
36aad85138 add item map query 2018-11-21 00:39:50 +03:00
Aleksey Kladov
9bb11aee44 populate resolve from unresolved imports 2018-11-21 00:31:12 +03:00
Aleksey Kladov
aab71bff8e move to method 2018-11-20 23:36:53 +03:00
Aleksey Kladov
cc8163439f populate modules 2018-11-20 21:50:22 +03:00
Aleksey Kladov
1cf92c3e28 remember spans with paths 2018-11-20 21:17:14 +03:00
Aleksey Kladov
c54b51fded add DefId 2018-11-20 21:12:15 +03:00
Aleksey Kladov
8086107b6a implement path conversion 2018-11-20 19:40:37 +03:00
Aleksey Kladov
bcdcfa9df2 Some import resolution boilerplate 2018-11-20 19:24:58 +03:00
Aleksey Kladov
5f8068cea8 make mod private 2018-11-20 18:34:10 +03:00
Aleksey Kladov
a2fdb41ace fix typo 2018-11-20 17:33:27 +03:00
Aleksey Kladov
8fc51501e0 Remove ModId 2018-11-20 17:23:17 +03:00
Aleksey Kladov
1913bedc2e Make more stuff private 2018-11-20 17:21:00 +03:00
Aleksey Kladov
a300fb68e2 Make most of modules impl private 2018-11-20 17:16:33 +03:00
Aleksey Kladov
0dd26a2f5b Use OO module API in completion 2018-11-20 17:08:40 +03:00
Aleksey Kladov
21508cfb2f Use OO API instead of resolve_module 2018-11-20 16:55:35 +03:00
Aleksey Kladov
0ab3c65d98 Use OO API in crate_for 2018-11-20 16:40:15 +03:00
Aleksey Kladov
d475e3b29f Make LikdId private 2018-11-20 16:24:47 +03:00
Aleksey Kladov
3b8d0c215a Use more OO API for parent module 2018-11-20 16:21:02 +03:00
Aleksey Kladov
099da13f53 Make some queries private
Convention: we prefix private queries with `_` until salsa support
real visibility.
2018-11-20 14:58:01 +03:00
Aleksey Kladov
4e683d7af1 Add ModId 2018-11-20 14:52:10 +03:00
Aleksey Kladov
4e48917c00 use loc2id for FnIds 2018-11-18 16:21:23 +03:00
Aleksey Kladov
cb22a799d6 Add Loc2IdMap 2018-11-18 15:44:24 +03:00
Adolfo Ochagavía
a4f7d7a7cd Fix typos 2018-11-11 19:28:55 +01:00
Aleksey Kladov
6d253b58da Complete paths in use trees 2018-11-07 21:38:41 +03:00
Aleksey Kladov
06fbc6e3ed Do more work in classify 2018-11-07 21:17:18 +03:00
Aleksey Kladov
397c235086 Use cached module scopes for completion 2018-11-07 21:08:11 +03:00
Aleksey Kladov
9b88ec488b split completion mod 2018-11-07 20:34:16 +03:00
Aleksey Kladov
af17fc9697 reorganize completion 2018-11-07 19:50:17 +03:00
Aleksey Kladov
22949dab26 rename module source 2018-11-07 18:42:36 +03:00
Aleksey Kladov
2ed1514df3 rename ROOT -> SOURCE_FILE 2018-11-07 18:42:36 +03:00
Aleksey Kladov
f8b36bbc3b Rename File -> SourceFileNode 2018-11-07 18:42:36 +03:00
Jeremy A. Kolb
c29f158c20 Rustfmt to pass CI 2018-11-07 18:24:55 +03:00
Jeremy A. Kolb
8ccd26adf3 Show documentation for hover requests 2018-11-07 18:24:55 +03:00
Aleksey Kladov
a5301e94d5 Generalize Owned nodes 2018-11-06 21:52:00 +03:00
Aleksey Kladov
0192c116f7 Use FilePosition everywhere 2018-11-05 14:57:41 +03:00
Aleksey Kladov
1e1c188cbf rename Position to FilePostion 2018-11-05 14:24:38 +03:00
Aleksey Kladov
6bbcfca7ae Fully add inline modules to module tree 2018-11-05 14:10:20 +03:00
Aleksey Kladov
44d8919384 Submodule is enum 2018-11-05 13:23:37 +03:00
Aleksey Kladov
17a88928f4 collect all submodules 2018-11-05 13:08:52 +03:00
Aleksey Kladov
e0b21b9899 submodules works with module sources 2018-11-05 12:36:38 +03:00
Aleksey Kladov
88a15d10d5 use module_for_source 2018-11-05 12:36:38 +03:00
Aleksey Kladov
cd878658d3 Introduce modules_from_source fn 2018-11-05 12:36:38 +03:00
Aleksey Kladov
f29b0172fb Use Default everywhere 2018-11-04 14:09:21 +03:00
Aleksey Kladov
cca5f862de Don't order import alphabetical
alphabetical ordering is no more consistent, and much less useful then
the ordering which arises naturally when you add import.
2018-11-01 16:18:53 +03:00
Aleksey Kladov
c74e86536e Dead code 2018-11-01 16:00:13 +03:00
Aleksey Kladov
a17b41033a update salsa 2018-11-01 15:30:07 +03:00
Aleksey Kladov
962a491829 Some docs 2018-11-01 14:31:35 +03:00
Aleksey Kladov
f2b654fd44 Add inline source 2018-11-01 13:51:44 +03:00
Aleksey Kladov
223fd2979c Introduce ModuleSource 2018-11-01 13:41:58 +03:00
Aleksey Kladov
d685a9b564 Use From to get an owned AST 2018-11-01 13:41:20 +03:00
Aleksey Kladov
2050812cad remove SyntaxPtrDatabase 2018-11-01 13:15:11 +03:00
Aleksey Kladov
2b210d98b8 Fix test 2018-11-01 00:00:43 +03:00
Aleksey Kladov
fabb804f30 Speedup fmt 2018-10-31 23:58:03 +03:00
Aleksey Kladov
8f1a83b4cb RemoveDeadCode 2018-10-31 23:50:18 +03:00
Aleksey Kladov
6be50f7d5d Reformat all 2018-10-31 23:41:43 +03:00
Jeremy A. Kolb
9b9fc135d6 Simplify find_all_refs by always resolving a ast::BindPat 2018-10-31 23:38:22 +03:00
Jeremy A. Kolb
406f366ccc Add DeclarationDescriptor and ReferenceDescriptor
Fixes #142
Fixes #146
2018-10-31 23:30:57 +03:00
bors[bot]
55ebe6380a Merge #167
167: Attempt to extract useful comments from function signatures r=matklad a=kjeremy

I'm trying to extract useful function comments for signature info. This will also be useful for hover.  This is a WIP (and actually works pretty well!) but I don't think it's the right approach long term so some guidance would be appreciated so that we could also get comments for say types and variable instances etc.

Currently `test_fn_signature_with_simple_doc` fails due to a bug in `extend` but we probably shouldn't use this approach anyway. Maybe comments should be attached to nodes somehow? I'm also thinking that maybe the markdown bits should live in the language server.

Thoughts?

Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2018-10-31 19:41:24 +00:00
Aleksey Kladov
dfba29e4fb Add MockAnalysis to make testing easier 2018-10-31 22:35:01 +03:00
Jeremy A. Kolb
05eb489ec5 Useful comments from function signatures 2018-10-31 15:23:20 -04:00
Jeremy A. Kolb
3c2aefc274 Prevent panic by initializing LibrariesQuery 2018-10-31 14:53:09 -04:00
bors[bot]
b58ca6b1a6 Merge #177
177: Librariese -> Libraries r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2018-10-31 18:16:58 +00:00
Jeremy A. Kolb
542fbcbaed Fix typo 2018-10-31 14:05:14 -04:00
bors[bot]
1dc5608d0b Merge #176
176: Move completio to ra_analysis r=matklad a=matklad

While we should handle completion for isolated file, it's better
achieved by using empty Analysis, rather than working only with &File:
we need memoization for type inference even inside a single file.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-10-31 18:05:12 +00:00
Jeremy A. Kolb
e60ef6260f Fix typos 2018-10-31 21:04:38 +03:00
Aleksey Kladov
f3fb59d707 Move completion to ra_analysis
While we should handle completion for isolated file, it's better
achieved by using empty Analysis, rather than working only with &File:
we need memoization for type inference even inside a single file.
2018-10-31 21:01:51 +03:00
Aleksey Kladov
c02be1502c move resolve local name 2018-10-31 15:13:49 +03:00
Aleksey Kladov
b67295134b Move FnDescriptors to analyzer 2018-10-31 10:56:31 +03:00
bors[bot]
032d15c392 Merge #171
171: Query-based module scopes r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-10-30 23:10:48 +00:00
Aleksey Kladov
fbbee53722 Add ModuleScope as a query
This is a first step towards queryifing completion and resolve.

Some code currently duplicates ra_editor: the plan is to move all
completion from ra_editor, but it'll take more than one commit.
2018-10-31 02:08:54 +03:00
Aleksey Kladov
23cad90fe9 ⬆️ salsa 2018-10-31 01:22:47 +03:00
bors[bot]
d10214581e Merge #168
168: Fix param number r=matklad a=kjeremy

Fixes the parameter number if we are not in a method

Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2018-10-30 21:50:51 +00:00
Aleksey Kladov
1643d94a65 switch to TextRange::subrange 2018-10-30 21:26:55 +03:00
Aleksey Kladov
950e8b8182 introduce syntax-ptr 2018-10-30 21:23:23 +03:00
Jeremy A. Kolb
93dc703011 Fix param number 2018-10-30 14:09:53 -04:00
Aleksey Kladov
bc4de7128f gc syntax trees 2018-10-29 13:58:11 +03:00
Aleksey Kladov
35568cf057 Index files in parallel 2018-10-29 13:32:45 +03:00
Aleksey Kladov
363adf07b7 restore symbols filtering 2018-10-25 17:59:03 +03:00
Aleksey Kladov
d190019571 Move input to top-level 2018-10-25 17:52:50 +03:00
Aleksey Kladov
5ef3fda5e1 Remove unneded Hash 2018-10-25 17:43:17 +03:00
Aleksey Kladov
e7217e1a01 dead code 2018-10-25 17:42:29 +03:00
Aleksey Kladov
3c024d6c62 dead code 2018-10-25 17:41:17 +03:00
Aleksey Kladov
e0eb33605a Encapsulate CrateGraph a bit 2018-10-25 17:40:24 +03:00
Aleksey Kladov
75d9cbd7c2 re-enable cancelation 2018-10-25 17:22:31 +03:00
Aleksey Kladov
772acb53f2 use correct file when resolving callables 2018-10-25 16:25:40 +03:00
Aleksey Kladov
171acad15b disable cancelation 2018-10-25 16:25:40 +03:00
Aleksey Kladov
56df0fc83c Improve logging 2018-10-25 16:25:40 +03:00
Aleksey Kladov
ee4d904cfb Store all the data in the Salsa Database 2018-10-25 16:25:40 +03:00
Aleksey Kladov
69d07df201 Complete crate:: paths 2018-10-24 18:37:25 +03:00
Aleksey Kladov
9a7db8fa00 simplify roots 2018-10-24 17:25:10 +03:00
Aleksey Kladov
8ada1a2689 Simplify 2018-10-24 16:36:28 +03:00
Aleksey Kladov
44c8ddf885 make indexing parallel again 2018-10-24 16:13:17 +03:00
Aleksey Kladov
b636d23bec revive the test 2018-10-24 15:00:03 +03:00
bors[bot]
ffbb604363 Merge #157
157: Introduce ModuleId r=matklad a=matklad

Previously, module was synonym with a file, and so a module could have
had several parents. This commit introduces a separate module concept,
such that each module has only one parent, but a single file can
correspond to different modules.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-10-23 17:57:10 +00:00
Aleksey Kladov
dc477db757 Introduce ModuleId
Previously, module was synonym with a file, and so a module could have
had several parents. This commit introduces a separate module concept,
such that each module has only one parent, but a single file can
correspond to different modules.
2018-10-23 20:44:23 +03:00
Jeremy A. Kolb
0ee37099b5 Cargo Update run
Bump relative-path to 0.4.0
Failure 0.1.3 to fix leak with downcast

Updated everything else too
2018-10-23 09:46:00 -04:00
bors[bot]
27694abd94 Merge #138
138: Fix some clippy lints r=matklad a=alanhdu

I went ahead and fixed all the clippy lints (there were a couple I thought would be better unfixed and added `cfg` statements to allow them) and also re-enabled clippy and rustfmt in CI.

They were disabled with `no time to explain, disable clippy checks`, so hopefully this won't go against whatever the reason at the time was 😆.

One question about the CI though: right now, it's an allowed failure that runs against the latest nightly each time. Would it be better to pin it to a specific nightly (or use the `beta` versions) to lower the churn?

Co-authored-by: Alan Du <alanhdu@gmail.com>
2018-10-22 21:14:38 +00:00
Aleksey Kladov
dbe2880219 cleanup 2018-10-20 23:27:06 +03:00
Aleksey Kladov
0102a01f76 Remove job handle 2018-10-20 22:59:54 +03:00
Aleksey Kladov
8bb4380448 Fix tests 2018-10-20 22:43:36 +03:00
Aleksey Kladov
6e88aaef5d use pythonic import order
use std
// blank line
use extern crates
// blank line
use crate::{}
2018-10-20 22:38:52 +03:00
Aleksey Kladov
8eea10e3ab actually check for cancelation 2018-10-20 22:35:55 +03:00
Aleksey Kladov
71cbdddf1c make file-symbols query cancelable 2018-10-20 22:29:26 +03:00
Aleksey Kladov
e74bf6e56e mark module queries as cacelable 2018-10-20 22:15:03 +03:00
Aleksey Kladov
9fb41716de make more things cancelable 2018-10-20 22:09:12 +03:00
Aleksey Kladov
998f2ae762 remove job tokens 2018-10-20 22:02:41 +03:00
Aleksey Kladov
c4b0d3cd56 make parent module cancelable 2018-10-20 21:52:49 +03:00
Aleksey Kladov
61518580ed introduce cancelable 2018-10-20 21:46:17 +03:00
Alan Du
0857c22f26 Revert "clippy: Fix new_ret_no_self"
This reverts commit 2ae9dfa812.
2018-10-20 12:29:25 -04:00
Aleksey Kladov
73dd870da2 update salsa 2018-10-20 18:43:02 +03:00
Jeremy A. Kolb
3746689e9d Implement Find All References for local variables 2018-10-18 13:40:12 -04:00
Alan Du
a5da770ec6 Fix function calls 2018-10-17 19:42:23 -04:00
Alan Du
bc774fe6cf clippy: needless_lifetimes 2018-10-17 19:42:23 -04:00
Alan Du
2ae9dfa812 clippy: Fix new_ret_no_self 2018-10-17 19:42:23 -04:00
Alan Du
2268a2f8c6 Silence clippy::derive_hash_xor_eq
Manually implement PartialEq
2018-10-17 19:42:23 -04:00
Alan Du
5db663d61f Clippy lint: single-character string constant 2018-10-17 19:42:23 -04:00
Jeremy A. Kolb
61f3a438d3 Cargo Format
Run `cargo fmt` and ignore generated files
2018-10-16 09:41:10 -04:00
Aleksey Kladov
f30a7deff1 switch to salsa release 2018-10-15 23:57:46 +03:00
Aleksey Kladov
fc31ddd303 Simplify 2018-10-15 22:59:18 +03:00
Aleksey Kladov
85ff328d31 remove clones 2018-10-15 22:36:08 +03:00
Aleksey Kladov
bbcd998433 make analysis sync 2018-10-15 22:29:24 +03:00
Aleksey Kladov
76c51fae77 Tweak writable root API 2018-10-15 22:05:21 +03:00
Aleksey Kladov
8c88900fa9 remove resolver from world 2018-10-15 22:01:50 +03:00
Aleksey Kladov
ee69fddf02 Drop dead code 2018-10-15 21:56:01 +03:00
Aleksey Kladov
7503c5528f fix tests 2018-10-15 21:54:12 +03:00
Aleksey Kladov
062019590d Switch to the master of salsa 2018-10-15 21:25:54 +03:00
Aleksey Kladov
d783371b86 migrate modue map to salsa 2018-10-15 21:20:20 +03:00
Aleksey Kladov
d8aee31a60 start salsa migration 2018-10-15 21:19:49 +03:00
Aleksey Kladov
64b879d6a9 add salsa dep, break the world 2018-10-15 21:12:06 +03:00
Aleksey Kladov
bb298158eb migrate analysis and server to 2018 2018-10-15 20:15:53 +03:00
Jeremy A. Kolb
c9909f42ba A FnDescriptor shouldn't exist without a name 2018-10-12 07:54:57 -04:00
Jeremy A. Kolb
f8a2b53304 Language Server: textDocument/signatureHelp
Implements a pretty barebones function signature help mechanism in
the language server.

Users can use `Analysis::resolve_callback()` to get basic information
about a call site.

Fixes #102
2018-10-11 16:40:46 -04:00
Muhammad Mominul Huque
dc2b30e9b6
Replace HashMap, HashSet with FxHashMap and FxHashSet 2018-10-12 00:07:44 +06:00
Aleksey Kladov
2b956fd3a8 Add on-enter handler
Now, typing doc comments is much more pleasant
2018-10-09 19:52:06 +03:00
Jeremy A. Kolb
828bd73195 Resolve local names first 2018-10-06 12:02:15 -04:00
Jeremy A. Kolb
1d4c767879 WIP: This doesn't currently work but I also don't think it's the right abstraction 2018-10-05 15:21:40 -04:00
Jeremy A. Kolb
ff0a706a30 Split folding ranges into editor and lsp parts 2018-09-24 09:52:33 -04:00
Aleksey Kladov
b5021411a8 rename all things 2018-09-16 13:07:39 +03:00