]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoMerge #2396
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>
4 years agoSwitch to variant-granularity field type inference
Aleksey Kladov [Sun, 24 Nov 2019 20:48:39 +0000 (23:48 +0300)]
Switch to variant-granularity field type inference

4 years agoMerge #2394
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>
4 years agoImplement HasModule for AdtId
Aleksey Kladov [Sun, 24 Nov 2019 19:47:58 +0000 (22:47 +0300)]
Implement HasModule for AdtId

4 years agoMerge #2393
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>
4 years agoSimplify ADT fields
Aleksey Kladov [Sun, 24 Nov 2019 19:44:24 +0000 (22:44 +0300)]
Simplify ADT fields

4 years agoMerge #2391
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>
4 years agoRemove impl_block module
Aleksey Kladov [Sun, 24 Nov 2019 18:03:24 +0000 (21:03 +0300)]
Remove impl_block module

4 years agohir_def is fully doc'ed!
Aleksey Kladov [Sun, 24 Nov 2019 18:00:50 +0000 (21:00 +0300)]
hir_def is fully doc'ed!

4 years agoMerge #2390
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>
4 years agoSimplify
Aleksey Kladov [Sun, 24 Nov 2019 17:53:42 +0000 (20:53 +0300)]
Simplify

4 years agoDocs
Aleksey Kladov [Sun, 24 Nov 2019 17:39:48 +0000 (20:39 +0300)]
Docs

4 years agoMerge #2389
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>
4 years agoDon't redo field resolution in the IDE
Aleksey Kladov [Sun, 24 Nov 2019 17:06:55 +0000 (20:06 +0300)]
Don't redo field resolution in the IDE

4 years agoMerge #2387
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>
4 years agoSimplify
Aleksey Kladov [Sun, 24 Nov 2019 15:48:29 +0000 (18:48 +0300)]
Simplify

4 years agoMerge #2381
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>
4 years agoadd proc-macro crate type handling
JasperDeSutter [Sun, 24 Nov 2019 10:33:12 +0000 (11:33 +0100)]
add proc-macro crate type handling

4 years agoCleanup nameres
Aleksey Kladov [Sun, 24 Nov 2019 15:05:12 +0000 (18:05 +0300)]
Cleanup nameres

4 years agoUse Trace in raw_items
Aleksey Kladov [Sun, 24 Nov 2019 14:49:49 +0000 (17:49 +0300)]
Use Trace in raw_items

4 years agoMerge #2385
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>
4 years agoSome docs
Aleksey Kladov [Sun, 24 Nov 2019 14:34:36 +0000 (17:34 +0300)]
Some docs

4 years agoCleanup
Aleksey Kladov [Sun, 24 Nov 2019 14:00:10 +0000 (17:00 +0300)]
Cleanup

4 years agoReduce visibility
Aleksey Kladov [Sun, 24 Nov 2019 13:47:29 +0000 (16:47 +0300)]
Reduce visibility

4 years agoMerge #2383
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>
4 years agoMerge #2384
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>
4 years agoNicer API for attrs
Aleksey Kladov [Sun, 24 Nov 2019 13:03:02 +0000 (16:03 +0300)]
Nicer API for attrs

4 years agoSlightly reduce code duplication
Aleksey Kladov [Sun, 24 Nov 2019 12:50:45 +0000 (15:50 +0300)]
Slightly reduce code duplication

4 years agoSimplify
Aleksey Kladov [Sun, 24 Nov 2019 12:28:45 +0000 (15:28 +0300)]
Simplify

4 years agoSimplify
Aleksey Kladov [Sun, 24 Nov 2019 12:20:59 +0000 (15:20 +0300)]
Simplify

4 years agoAdd alloc to the sysroot
Marco Groppo [Sun, 24 Nov 2019 12:19:47 +0000 (13:19 +0100)]
Add alloc to the sysroot

4 years agoSwitch to StaticLoc for statics
Aleksey Kladov [Sun, 24 Nov 2019 12:13:56 +0000 (15:13 +0300)]
Switch to StaticLoc for statics

4 years agoMerge #2382
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>
4 years agoRemove ids module
Aleksey Kladov [Sun, 24 Nov 2019 11:25:48 +0000 (14:25 +0300)]
Remove ids module

4 years agoPull macro up
Aleksey Kladov [Sun, 24 Nov 2019 11:13:51 +0000 (14:13 +0300)]
Pull macro up

4 years agoCleanup imports
Aleksey Kladov [Sun, 24 Nov 2019 11:02:08 +0000 (14:02 +0300)]
Cleanup imports

4 years agoPush poison_macros down
Aleksey Kladov [Sun, 24 Nov 2019 10:57:45 +0000 (13:57 +0300)]
Push poison_macros down

4 years agoReduce visbility
Aleksey Kladov [Sun, 24 Nov 2019 10:34:27 +0000 (13:34 +0300)]
Reduce visbility

4 years agoMerge #2378
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>
4 years agoFix panic in batch analysis
Aleksey Kladov [Sun, 24 Nov 2019 09:06:00 +0000 (12:06 +0300)]
Fix panic in batch analysis

Closes #2272

4 years agoMerge #2365
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>
4 years agoMerge #2343
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>
4 years agoMerge #2360
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>
4 years agodo refact and fix some issue
bravomikekilo [Sun, 24 Nov 2019 05:14:57 +0000 (13:14 +0800)]
do refact and fix some issue

4 years agoUse macro for all the things
Edwin Cheng [Sat, 23 Nov 2019 14:48:34 +0000 (22:48 +0800)]
Use macro for all the things

4 years agoMerge #2375
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>
4 years agoMove ModuleSource back to hir
Aleksey Kladov [Sat, 23 Nov 2019 14:06:04 +0000 (17:06 +0300)]
Move ModuleSource back to hir

4 years agoPrivatise nameres
Aleksey Kladov [Sat, 23 Nov 2019 13:53:16 +0000 (16:53 +0300)]
Privatise nameres

4 years agoRename CrateModuleId
Aleksey Kladov [Sat, 23 Nov 2019 13:49:53 +0000 (16:49 +0300)]
Rename CrateModuleId

4 years agoRename BuiltinExpander to BuiltinFnLikeExpander
Edwin Cheng [Sat, 23 Nov 2019 13:54:39 +0000 (21:54 +0800)]
Rename BuiltinExpander to BuiltinFnLikeExpander

4 years agoMove ImportId
Aleksey Kladov [Sat, 23 Nov 2019 13:49:05 +0000 (16:49 +0300)]
Move ImportId

4 years agoMerge #2374
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>
4 years agoSimplify HasSource
Aleksey Kladov [Sat, 23 Nov 2019 13:41:04 +0000 (16:41 +0300)]
Simplify HasSource

4 years agoHide ImportId
Aleksey Kladov [Sat, 23 Nov 2019 13:39:53 +0000 (16:39 +0300)]
Hide ImportId

4 years agoRemove unneded supertrait
Aleksey Kladov [Sat, 23 Nov 2019 13:30:14 +0000 (16:30 +0300)]
Remove unneded supertrait

4 years agoMerge #2373
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>
4 years agoCleanup imports
Aleksey Kladov [Sat, 23 Nov 2019 12:48:45 +0000 (15:48 +0300)]
Cleanup imports

4 years agoCleanup imports
Aleksey Kladov [Sat, 23 Nov 2019 12:33:21 +0000 (15:33 +0300)]
Cleanup imports

4 years agoMerge #2372
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>
4 years agoNote that debugging infra is broken
Aleksey Kladov [Sat, 23 Nov 2019 11:45:37 +0000 (14:45 +0300)]
Note that debugging infra is broken

4 years agoGet rid of DefDatabase2
Aleksey Kladov [Sat, 23 Nov 2019 11:44:43 +0000 (14:44 +0300)]
Get rid of DefDatabase2

4 years agoMove docs to hir_def
Aleksey Kladov [Sat, 23 Nov 2019 11:43:38 +0000 (14:43 +0300)]
Move docs to hir_def

4 years agoMerge #2370
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>
4 years agoFix url to point to rust_analyzer specifically
Ashkan Kiani [Sat, 23 Nov 2019 10:00:38 +0000 (02:00 -0800)]
Fix url to point to rust_analyzer specifically

4 years agoMerge #2369
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>
4 years agoAdd note about neovim's built in language server
Ashkan Kiani [Sat, 23 Nov 2019 09:58:13 +0000 (01:58 -0800)]
Add note about neovim's built in language server

4 years agoMove lang_items to hir_def
Aleksey Kladov [Sat, 23 Nov 2019 09:58:01 +0000 (12:58 +0300)]
Move lang_items to hir_def

4 years agoMerge #2368
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>
4 years agoUse attrs rather than syntax for lang items
Aleksey Kladov [Sat, 23 Nov 2019 09:01:56 +0000 (12:01 +0300)]
Use attrs rather than syntax for lang items

4 years agoMerge #2366
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>
4 years agoMove attrs query to hir_def
Aleksey Kladov [Sat, 23 Nov 2019 08:14:10 +0000 (11:14 +0300)]
Move attrs query to hir_def

4 years agoImprove fail case in expand_macro
Edwin Cheng [Sat, 23 Nov 2019 02:33:14 +0000 (10:33 +0800)]
Improve fail case in expand_macro

4 years agoMerge #2363
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>
4 years agoMore principled sources for enums and fields
Aleksey Kladov [Fri, 22 Nov 2019 18:43:36 +0000 (21:43 +0300)]
More principled sources for enums and fields

4 years agoMerge #2361
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>
4 years agoUniformalize naming
Aleksey Kladov [Fri, 22 Nov 2019 18:52:06 +0000 (21:52 +0300)]
Uniformalize naming

4 years agoRefactor builtin macro
Edwin Cheng [Fri, 22 Nov 2019 17:47:35 +0000 (01:47 +0800)]
Refactor builtin macro

4 years agoAdd TestDB
Edwin Cheng [Fri, 22 Nov 2019 17:11:33 +0000 (01:11 +0800)]
Add TestDB

4 years agoMerge #2355
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>
4 years agoExpand column!()
Jeremy Kolb [Fri, 22 Nov 2019 13:48:33 +0000 (08:48 -0500)]
Expand column!()

4 years agoMerge #2357
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>
4 years agoMerge #2359
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>
4 years agoRemove TraitData from API
Aleksey Kladov [Fri, 22 Nov 2019 15:53:39 +0000 (18:53 +0300)]
Remove TraitData from API

4 years agoMerge #2358
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>
4 years agoHide data from public API
Aleksey Kladov [Fri, 22 Nov 2019 15:51:53 +0000 (18:51 +0300)]
Hide data from public API

4 years agoMove const&static date to hir_def
Aleksey Kladov [Fri, 22 Nov 2019 15:46:39 +0000 (18:46 +0300)]
Move const&static date to hir_def

4 years agoExpand file! to dummy ""
kjeremy [Fri, 22 Nov 2019 15:05:04 +0000 (10:05 -0500)]
Expand file! to dummy ""

4 years agoMerge #2356
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>
4 years agoMake ImplData's fields public
Aleksey Kladov [Fri, 22 Nov 2019 14:33:53 +0000 (17:33 +0300)]
Make ImplData's fields public

4 years agoMove data to a single file
Aleksey Kladov [Fri, 22 Nov 2019 14:32:10 +0000 (17:32 +0300)]
Move data to a single file

4 years agoMove FunctionData to hir_def
Aleksey Kladov [Fri, 22 Nov 2019 14:10:51 +0000 (17:10 +0300)]
Move FunctionData to hir_def

4 years agoMerge #2354
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>
4 years agoReorder
Aleksey Kladov [Fri, 22 Nov 2019 11:12:45 +0000 (14:12 +0300)]
Reorder

4 years agoCleanup errors
Aleksey Kladov [Fri, 22 Nov 2019 11:08:18 +0000 (14:08 +0300)]
Cleanup errors

4 years agoMerge #2353
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>
4 years agoAdd support for environment to CrateGraph
Aleksey Kladov [Fri, 22 Nov 2019 10:55:03 +0000 (13:55 +0300)]
Add support for environment to CrateGraph

4 years agoMerge #2348 #2352
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>
4 years agoMove TypeAlias to hir_def
Aleksey Kladov [Fri, 22 Nov 2019 09:57:40 +0000 (12:57 +0300)]
Move TypeAlias to hir_def

4 years agoMerge #2347
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>
4 years agoMerge #2351
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>