Commit graph

4084 commits

Author SHA1 Message Date
Aleksey Kladov
8b7f58976b don't cache parses twice
Before this commit, `Parse`s for original file ended up two times in
salsa's db: first, when we parse original file, and second, when we
parse macro or a file.

Given that parse trees are the worst ofenders in terms of memory, it
makes sense to make sure we store them only once.
2019-06-02 20:15:10 +03:00
bors[bot]
ae8fd982c0 Merge #1368
1368: Store referece instead of full token tree in tokenbuffer r=matklad a=edwin0cheng

This PR try to minimize the memory allocation in converting `SyntaxNode` to `TokenTree` by using reference isnteead of full token tree in `TokenBuffer`. 

Note that the final goal is replace `TokenTree` with TokenBuffer such that there is no conversion between them.

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-06-02 17:09:49 +00:00
Edwin Cheng
824f413d75 unnecessary paranthesis 2019-06-03 01:05:58 +08:00
Edwin Cheng
54ea251bd4 Store referece in tokenbuffer 2019-06-03 00:54:33 +08:00
bors[bot]
b40c6de8a6 Merge #1367
1367: collect macro queries r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-02 15:59:12 +00:00
Aleksey Kladov
2f02e1a8ba collect macro queries 2019-06-02 18:58:49 +03:00
bors[bot]
82cf27b5fc Merge #1362
1362: Introduce AST database r=matklad a=matklad

The idea here is to separate fragile bits which look into the syntax directly from robust bits which are safe across reparses. This uses the new `salsa::requires` featue

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-02 09:32:26 +00:00
Aleksey Kladov
5af9e475f4 add AstDatabase 2019-06-02 12:27:36 +03:00
bors[bot]
8256dfdd71 Merge #1366
1366: collect types and bodies r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-02 08:34:24 +00:00
Aleksey Kladov
011599df27 collect types and bodies 2019-06-01 22:47:20 +03:00
bors[bot]
3573923279 Merge #1363
1363: some work on memory r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-01 19:32:02 +00:00
Aleksey Kladov
f7d3a87305 collect impl source maps 2019-06-01 22:31:22 +03:00
Aleksey Kladov
d7a2a9171e don't cache ast_id_to_node 2019-06-01 22:14:42 +03:00
Aleksey Kladov
37e80c5297 show macro expanded trees in the stats as well 2019-06-01 22:13:24 +03:00
bors[bot]
ccec71165b Merge #1360
1360: Improve goto definition for MBE r=matklad a=edwin0cheng

This PR improve the macro resolution for goto definition and expression macro invocation by using proper path resolution for external macros. 



Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-06-01 17:48:06 +00:00
Edwin Cheng
371961be0e Improve goto definition for MBE 2019-06-01 19:34:19 +08:00
bors[bot]
1e6b45b05a Merge #1359
1359: don't poison mutex around chalk r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-01 08:00:00 +00:00
Aleksey Kladov
f89d34be6a don't poison mutex around chalk
We use panics for cancellation, so we could trigger panic while
holding the solver. std::sync::Mutex will be poisoned as a result,
which and all further attempts to use solver (from other threads) will
panic as well.

This commit switches to parking_lot::Mutex which just unlocks on panic.
2019-06-01 10:57:44 +03:00
bors[bot]
35e79bf422 Merge #1358
1358: apply profile filter to top-level entries only r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-06-01 07:46:15 +00:00
Aleksey Kladov
4dd7faed34 apply profile filter to top-level entries only 2019-06-01 10:41:47 +03:00
Aleksey Kladov
bf801953a3 rename 2019-06-01 10:31:40 +03:00
Aleksey Kladov
678a458543 move subs inside 2019-06-01 10:24:43 +03:00
bors[bot]
5023860a55 Merge #1356
1356: move completed requests to a separate file r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-31 18:50:34 +00:00
Aleksey Kladov
78e17f65cf use sync queries for join lines and friends 2019-05-31 20:53:00 +03:00
Aleksey Kladov
c6537c3280 add sync requests 2019-05-31 20:50:16 +03:00
Aleksey Kladov
9697d8afad cleanup 2019-05-31 20:42:53 +03:00
Aleksey Kladov
15efd58274 cleanup 2019-05-31 20:30:14 +03:00
Aleksey Kladov
2d773a46c9 simplify 2019-05-31 20:23:56 +03:00
Aleksey Kladov
e1bda6aeda move completed requests to a separate file 2019-05-31 20:14:54 +03:00
Aleksey Kladov
838915c9a2 simplify 2019-05-31 19:24:33 +03:00
Aleksey Kladov
8bb02859e8 introduce constant 2019-05-31 19:20:22 +03:00
Aleksey Kladov
0e542936be minor 2019-05-31 19:17:46 +03:00
bors[bot]
6c1ec865fb Merge #1354
1354: Sort hover results in tests r=matklad a=lnicola



Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-05-31 11:13:48 +00:00
Laurențiu Nicola
be15541b03 Sort hover results in tests 2019-05-30 21:20:17 +03:00
bors[bot]
29c7cdb25e Merge #1353
1353: Fix typo docs/user/README.md r=matklad a=eminence



Co-authored-by: Andrew Chin <achin@eminence32.net>
2019-05-30 14:39:20 +00:00
Andrew Chin
7c0168ce24
Fix typo docs/user/README.md 2019-05-30 10:10:10 -04:00
bors[bot]
3cf841e1bc Merge #1352
1352: Builtins r=matklad a=matklad

closes #1340

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-30 13:13:06 +00:00
Aleksey Kladov
b6a854e161 update ra_ide_api to use builtins 2019-05-30 16:10:07 +03:00
Aleksey Kladov
c6ee9d681c add tests for primitive types 2019-05-30 15:14:11 +03:00
Aleksey Kladov
97158f5c8a add built-in types to scopes 2019-05-30 15:03:58 +03:00
Aleksey Kladov
4e5b02966b add list of builtin types 2019-05-30 14:26:27 +03:00
Aleksey Kladov
e6545cc647 add ModuleDef::BuiltInType 2019-05-30 14:06:28 +03:00
bors[bot]
6b88735fe6 Merge #1351
1351: switch to upstream salsa r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-30 10:05:34 +00:00
Aleksey Kladov
54f77ad68d switch to upstream salsa 2019-05-30 13:05:09 +03:00
bors[bot]
f2cb94db77 Merge #1350
1350: ⬆️ parking_lot r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-30 09:02:56 +00:00
Aleksey Kladov
18ed351747 ⬆️ parking_lot 2019-05-30 12:02:30 +03:00
bors[bot]
572a1e507e Merge #1347
1347: Add status buffer function to emacs integration r=flodiebold a=flodiebold

Also fix a minor race condition in the 'extend selection' initialization.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-05-30 08:36:41 +00:00
bors[bot]
615b59aea0 Merge #1349
1349: don't remove tools from cache r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-30 07:21:15 +00:00
Aleksey Kladov
0f6951249e don't remove tools from cache
On CI, we remove this project's artifacts from ./target before caching
it. This way, cache never changes, because it only caches deps.

We do this approximatelly, and, together with our own tools crate, we
also remove itertools, which are used by some other deps. Given that
tools change rarely, let's just cache them?
2019-05-30 10:17:29 +03:00
bors[bot]
e02d90f8f9 Merge #1348
1348: cancel salsa's validation r=matklad a=matklad

This small fix should improve rust-analyzer resopnsivness for
real-time operations like onEnter handling.

Turns out, salsa's validation can take hundreds of milliseconds, and,
in case no changes were made, it won't be triggering any queries.

Because we check for cancellation in queries, that means that
validation is not cancellable!

What this PR does is injecting check_canceled checks into validation,
by using salsa's event API, which wasn't meant to be used like this,
but, hey, it works!

Here's the onEnter handling before and after this change:

https://youtu.be/7-ffPzgvH7o

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-05-30 07:11:08 +00:00