]>
git.lizzy.rs Git - rust.git/log
bors[bot] [Sun, 24 Nov 2019 21:45:26 +0000 (21:45 +0000)]
Merge #2396
2396: Switch to variant-granularity field type inference r=flodiebold a=matklad
r? @flodiebold
Previously, we had a `ty` query for each field. This PR switcthes to a query per struct, which returns an `ArenaMap` with `Ty`s.
I don't know which approach is better. What is bugging me about the original approach is that, if we do all queries on the "leaf" defs, in practice we get a ton of queries which repeatedly reach into the parent definition to compute module, resolver, etc. This *seems* wasteful (but I don't think this is really what causes any perf problems for us).
At the same time, I've been looking at Kotlin, and they seem to use the general pattern of analyzing the *parent* definition, and storing info about children into a `BindingContext`.
I don't really which way is preferable. I think I want to try this approach, where query granularity generally mirrors the data granularity. The primary motivation for me here is probably just hope that we can avoid adding a ton of helpers to a `StructField`, and maybe in general avoid the need to switch to a global `StructField`, using `LocalStructFieldId` most of the time internally.
For external API (ie, for `ra_ide_api`), I think we should continue with fine-grained `StructField::ty` approach, which internally fetches the table for the whole struct and indexes into it.
In terms of actual memory savings, the results are as follows:
```
This PR:
142kb FieldTypesQuery (deps)
38kb FieldTypesQuery
Status Quo:
208kb TypeForFieldQuery (deps)
18kb TypeForFieldQuery
```
Note how the table itself occupies more than twice as much space! I don't have an explanation for this: a plausible hypothesis is that single-field structs are very common and for them the table is a pessimisation.
THere's noticiable wallclock time difference.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 20:48:39 +0000 (23:48 +0300)]
Switch to variant-granularity field type inference
bors[bot] [Sun, 24 Nov 2019 19:52:15 +0000 (19:52 +0000)]
Merge #2394
2394: Implement HasModule for AdtId r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 19:47:58 +0000 (22:47 +0300)]
Implement HasModule for AdtId
bors[bot] [Sun, 24 Nov 2019 19:45:08 +0000 (19:45 +0000)]
Merge #2393
2393: Simplify ADT fields r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 19:44:24 +0000 (22:44 +0300)]
Simplify ADT fields
bors[bot] [Sun, 24 Nov 2019 18:18:47 +0000 (18:18 +0000)]
Merge #2391
2391: Simplify r=matklad a=matklad
bors r+
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 18:03:24 +0000 (21:03 +0300)]
Remove impl_block module
Aleksey Kladov [Sun, 24 Nov 2019 18:00:50 +0000 (21:00 +0300)]
hir_def is fully doc'ed!
bors[bot] [Sun, 24 Nov 2019 17:54:14 +0000 (17:54 +0000)]
Merge #2390
2390: Simplify r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 17:53:42 +0000 (20:53 +0300)]
Simplify
Aleksey Kladov [Sun, 24 Nov 2019 17:39:48 +0000 (20:39 +0300)]
Docs
bors[bot] [Sun, 24 Nov 2019 17:08:16 +0000 (17:08 +0000)]
Merge #2389
2389: Don't redo field resolution in the IDE r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 17:06:55 +0000 (20:06 +0300)]
Don't redo field resolution in the IDE
bors[bot] [Sun, 24 Nov 2019 16:06:58 +0000 (16:06 +0000)]
Merge #2387
2387: Simplify r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 15:48:29 +0000 (18:48 +0300)]
Simplify
bors[bot] [Sun, 24 Nov 2019 15:59:47 +0000 (15:59 +0000)]
Merge #2381
2381: Add proc-macro crate type handling r=JasperDeSutter a=JasperDeSutter
Resolves the libproc_macro crate in crates that are the proc-macro type.
This doesn't seem the ideal implementation though, since the compiler still requires you to write `extern crate proc_macro;` (even in 2018 edition).
Co-authored-by: JasperDeSutter <jasper.desutter@gmail.com>
JasperDeSutter [Sun, 24 Nov 2019 10:33:12 +0000 (11:33 +0100)]
add proc-macro crate type handling
Aleksey Kladov [Sun, 24 Nov 2019 15:05:12 +0000 (18:05 +0300)]
Cleanup nameres
Aleksey Kladov [Sun, 24 Nov 2019 14:49:49 +0000 (17:49 +0300)]
Use Trace in raw_items
bors[bot] [Sun, 24 Nov 2019 14:36:31 +0000 (14:36 +0000)]
Merge #2385
2385: Some docs r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 14:34:36 +0000 (17:34 +0300)]
Some docs
Aleksey Kladov [Sun, 24 Nov 2019 14:00:10 +0000 (17:00 +0300)]
Cleanup
Aleksey Kladov [Sun, 24 Nov 2019 13:47:29 +0000 (16:47 +0300)]
Reduce visibility
bors[bot] [Sun, 24 Nov 2019 13:26:54 +0000 (13:26 +0000)]
Merge #2383
2383: Add alloc to the crate graph r=matklad a=marcogroppo
`alloc` has been added to the crate graph.
Completions work, but they are available even when the user has **not** declared an `extern crate alloc`. Is this the correct approach?
Fixes #2376.
Co-authored-by: Marco Groppo <marco.groppo@gmail.com>
bors[bot] [Sun, 24 Nov 2019 13:05:25 +0000 (13:05 +0000)]
Merge #2384
2384: Nicer API for attrs r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 13:03:02 +0000 (16:03 +0300)]
Nicer API for attrs
Aleksey Kladov [Sun, 24 Nov 2019 12:50:45 +0000 (15:50 +0300)]
Slightly reduce code duplication
Aleksey Kladov [Sun, 24 Nov 2019 12:28:45 +0000 (15:28 +0300)]
Simplify
Aleksey Kladov [Sun, 24 Nov 2019 12:20:59 +0000 (15:20 +0300)]
Simplify
Marco Groppo [Sun, 24 Nov 2019 12:19:47 +0000 (13:19 +0100)]
Add alloc to the sysroot
Aleksey Kladov [Sun, 24 Nov 2019 12:13:56 +0000 (15:13 +0300)]
Switch to StaticLoc for statics
bors[bot] [Sun, 24 Nov 2019 11:28:51 +0000 (11:28 +0000)]
Merge #2382
2382: Remove ids module r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 11:25:48 +0000 (14:25 +0300)]
Remove ids module
Aleksey Kladov [Sun, 24 Nov 2019 11:13:51 +0000 (14:13 +0300)]
Pull macro up
Aleksey Kladov [Sun, 24 Nov 2019 11:02:08 +0000 (14:02 +0300)]
Cleanup imports
Aleksey Kladov [Sun, 24 Nov 2019 10:57:45 +0000 (13:57 +0300)]
Push poison_macros down
Aleksey Kladov [Sun, 24 Nov 2019 10:34:27 +0000 (13:34 +0300)]
Reduce visbility
bors[bot] [Sun, 24 Nov 2019 09:12:12 +0000 (09:12 +0000)]
Merge #2378
2378: Fix panic in batch analysis r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sun, 24 Nov 2019 09:06:00 +0000 (12:06 +0300)]
Fix panic in batch analysis
Closes #2272
bors[bot] [Sun, 24 Nov 2019 08:39:29 +0000 (08:39 +0000)]
Merge #2365
2365: Make expand-macro more flexible r=matklad a=edwin0cheng
Due to lack of implementation or other types of errors, some macros do not expand correctly in the current situation. The PR attempts to make `expand-macro` more flexible in error situations by ignoring internal failed macro expansion.
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
bors[bot] [Sun, 24 Nov 2019 08:32:07 +0000 (08:32 +0000)]
Merge #2343
2343: implement assist invert_if r=matklad a=bravomikekilo
fix [issue 2219 invert if condition](https://github.com/rust-analyzer/rust-analyzer/issues/2219)
I put the assist cursor range to `if` of the if expression, because both condition and body will be replaced. Is there any way to replace them without cover the cursor position?
@matklad
Co-authored-by: bravomikekilo <bmk1221@126.com>
bors[bot] [Sun, 24 Nov 2019 08:17:02 +0000 (08:17 +0000)]
Merge #2360
2360: Refactor builtin macro r=matklad a=edwin0cheng
Refactor builtin macro and add some local tests.
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
bravomikekilo [Sun, 24 Nov 2019 05:14:57 +0000 (13:14 +0800)]
do refact and fix some issue
Edwin Cheng [Sat, 23 Nov 2019 14:48:34 +0000 (22:48 +0800)]
Use macro for all the things
bors[bot] [Sat, 23 Nov 2019 14:13:50 +0000 (14:13 +0000)]
Merge #2375
2375: Privatise nameres r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 14:06:04 +0000 (17:06 +0300)]
Move ModuleSource back to hir
Aleksey Kladov [Sat, 23 Nov 2019 13:53:16 +0000 (16:53 +0300)]
Privatise nameres
Aleksey Kladov [Sat, 23 Nov 2019 13:49:53 +0000 (16:49 +0300)]
Rename CrateModuleId
Edwin Cheng [Sat, 23 Nov 2019 13:54:39 +0000 (21:54 +0800)]
Rename BuiltinExpander to BuiltinFnLikeExpander
Aleksey Kladov [Sat, 23 Nov 2019 13:49:05 +0000 (16:49 +0300)]
Move ImportId
bors[bot] [Sat, 23 Nov 2019 13:41:33 +0000 (13:41 +0000)]
Merge #2374
2374: Simplify HasSource r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 13:41:04 +0000 (16:41 +0300)]
Simplify HasSource
Aleksey Kladov [Sat, 23 Nov 2019 13:39:53 +0000 (16:39 +0300)]
Hide ImportId
Aleksey Kladov [Sat, 23 Nov 2019 13:30:14 +0000 (16:30 +0300)]
Remove unneded supertrait
bors[bot] [Sat, 23 Nov 2019 12:53:22 +0000 (12:53 +0000)]
Merge #2373
2373: Cleanup imports r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 12:48:45 +0000 (15:48 +0300)]
Cleanup imports
Aleksey Kladov [Sat, 23 Nov 2019 12:33:21 +0000 (15:33 +0300)]
Cleanup imports
bors[bot] [Sat, 23 Nov 2019 11:50:30 +0000 (11:50 +0000)]
Merge #2372
2372: Note that debugging infra is broken r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 11:45:37 +0000 (14:45 +0300)]
Note that debugging infra is broken
Aleksey Kladov [Sat, 23 Nov 2019 11:44:43 +0000 (14:44 +0300)]
Get rid of DefDatabase2
Aleksey Kladov [Sat, 23 Nov 2019 11:43:38 +0000 (14:43 +0300)]
Move docs to hir_def
bors[bot] [Sat, 23 Nov 2019 10:05:59 +0000 (10:05 +0000)]
Merge #2370
2370: Add note about neovim's built in language server r=matklad a=norcalli
I implemented a builtin language server client (`:h lsp.txt`) for neovim and it's been in master since 2019-11-13. We built https://github.com/neovim/nvim-lsp to contain easy configuration settings for servers which we hope to be a database that can be referenced for other editors/3rd party users as well.
Support will be merged very soon https://github.com/neovim/nvim-lsp/pull/43.
Co-authored-by: Ashkan Kiani <ashkan.k.kiani@gmail.com>
Ashkan Kiani [Sat, 23 Nov 2019 10:00:38 +0000 (02:00 -0800)]
Fix url to point to rust_analyzer specifically
bors[bot] [Sat, 23 Nov 2019 09:58:36 +0000 (09:58 +0000)]
Merge #2369
2369: Move lang_items to hir_def r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Ashkan Kiani [Sat, 23 Nov 2019 09:58:13 +0000 (01:58 -0800)]
Add note about neovim's built in language server
Aleksey Kladov [Sat, 23 Nov 2019 09:58:01 +0000 (12:58 +0300)]
Move lang_items to hir_def
bors[bot] [Sat, 23 Nov 2019 09:02:59 +0000 (09:02 +0000)]
Merge #2368
2368: Use attrs rather than syntax for lang items r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 09:01:56 +0000 (12:01 +0300)]
Use attrs rather than syntax for lang items
bors[bot] [Sat, 23 Nov 2019 08:15:05 +0000 (08:15 +0000)]
Merge #2366
2366: Move attrs query to hir_def r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Sat, 23 Nov 2019 08:14:10 +0000 (11:14 +0300)]
Move attrs query to hir_def
Edwin Cheng [Sat, 23 Nov 2019 02:33:14 +0000 (10:33 +0800)]
Improve fail case in expand_macro
bors[bot] [Fri, 22 Nov 2019 20:12:07 +0000 (20:12 +0000)]
Merge #2363
2363: More principled sources for enums and fields r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 18:43:36 +0000 (21:43 +0300)]
More principled sources for enums and fields
bors[bot] [Fri, 22 Nov 2019 18:52:44 +0000 (18:52 +0000)]
Merge #2361
2361: Uniformalize naming r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 18:52:06 +0000 (21:52 +0300)]
Uniformalize naming
Edwin Cheng [Fri, 22 Nov 2019 17:47:35 +0000 (01:47 +0800)]
Refactor builtin macro
Edwin Cheng [Fri, 22 Nov 2019 17:11:33 +0000 (01:11 +0800)]
Add TestDB
bors[bot] [Fri, 22 Nov 2019 16:37:10 +0000 (16:37 +0000)]
Merge #2355
2355: Expand column!() r=kjeremy a=kjeremy
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
Jeremy Kolb [Fri, 22 Nov 2019 13:48:33 +0000 (08:48 -0500)]
Expand column!()
bors[bot] [Fri, 22 Nov 2019 16:07:37 +0000 (16:07 +0000)]
Merge #2357
2357: Expand file! to dummy "" r=edwin0cheng a=kjeremy
See https://github.com/rust-analyzer/rust-analyzer/pull/2355#issuecomment-
557541873
Co-authored-by: kjeremy <kjeremy@gmail.com>
bors[bot] [Fri, 22 Nov 2019 16:00:17 +0000 (16:00 +0000)]
Merge #2359
2359: Remove TraitData from API r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 15:53:39 +0000 (18:53 +0300)]
Remove TraitData from API
bors[bot] [Fri, 22 Nov 2019 15:52:25 +0000 (15:52 +0000)]
Merge #2358
2358: Hide data from public API r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 15:51:53 +0000 (18:51 +0300)]
Hide data from public API
Aleksey Kladov [Fri, 22 Nov 2019 15:46:39 +0000 (18:46 +0300)]
Move const&static date to hir_def
kjeremy [Fri, 22 Nov 2019 15:05:04 +0000 (10:05 -0500)]
Expand file! to dummy ""
bors[bot] [Fri, 22 Nov 2019 14:43:32 +0000 (14:43 +0000)]
Merge #2356
2356: Move FunctionData to hir_def r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 14:33:53 +0000 (17:33 +0300)]
Make ImplData's fields public
Aleksey Kladov [Fri, 22 Nov 2019 14:32:10 +0000 (17:32 +0300)]
Move data to a single file
Aleksey Kladov [Fri, 22 Nov 2019 14:10:51 +0000 (17:10 +0300)]
Move FunctionData to hir_def
bors[bot] [Fri, 22 Nov 2019 11:13:24 +0000 (11:13 +0000)]
Merge #2354
2354: Cleanup errors r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 11:12:45 +0000 (14:12 +0300)]
Reorder
Aleksey Kladov [Fri, 22 Nov 2019 11:08:18 +0000 (14:08 +0300)]
Cleanup errors
bors[bot] [Fri, 22 Nov 2019 10:58:19 +0000 (10:58 +0000)]
Merge #2353
2353: Add support for environment to CrateGraph r=matklad a=matklad
bors r+
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 10:55:03 +0000 (13:55 +0300)]
Add support for environment to CrateGraph
bors[bot] [Fri, 22 Nov 2019 10:14:41 +0000 (10:14 +0000)]
Merge #2348 #2352
2348: Add support for stringify! builtin macro r=matklad a=piotr-szpetkowski
Refs #2212
First time ever contributing here, hopefully it's ok.
2352: Move TypeAlias to hir_def r=matklad a=matklad
Co-authored-by: Piotr Szpetkowski <piotr.szpetkowski@pyquest.space>
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
Aleksey Kladov [Fri, 22 Nov 2019 09:57:40 +0000 (12:57 +0300)]
Move TypeAlias to hir_def
bors[bot] [Fri, 22 Nov 2019 10:00:44 +0000 (10:00 +0000)]
Merge #2347
2347: More correct expand macro r=matklad a=edwin0cheng
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
bors[bot] [Fri, 22 Nov 2019 09:27:13 +0000 (09:27 +0000)]
Merge #2351
2351: Rename Atts trait r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>