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
Aleksey Kladov
4a3f76d3bb
wip
2019-01-01 22:15:35 +03:00
Aleksey Kladov
f8d419ee89
fix tests
2019-01-01 22:15:35 +03:00
Aleksey Kladov
289391e163
use MFile
2019-01-01 22:15:35 +03:00
Aleksey Kladov
4161466918
introduce MFileId
2019-01-01 22:15:35 +03:00
Aleksey Kladov
9d4af40995
work towards brining macros to nameres
2019-01-01 22:15:35 +03:00
Aleksey Kladov
7dc45745a3
save top-level macros in module items
2019-01-01 22:15:35 +03:00
Aleksey Kladov
e5b2fd6771
hard-code expansion of query_group
2019-01-01 22:15:35 +03:00
Aleksey Kladov
832bae8e28
fix tests
2019-01-01 22:15:35 +03:00
Aleksey Kladov
882a86240f
rename
2019-01-01 22:15:35 +03:00
Aleksey Kladov
b2fec18098
move more macros to hir
2019-01-01 22:15:35 +03:00
Aleksey Kladov
57030f587b
use macros database in analysis
2019-01-01 22:15:35 +03:00
Aleksey Kladov
d753656192
introduce MacrosDatabase
2019-01-01 22:15:35 +03:00
gfreezy
39dab68404
place complete_use_tree_keyword in the same mod with complete_expr_keyword
2019-01-01 23:12:51 +08:00
gfreezy
9895529d5c
move to a seperate complete_use_tree_keyword mod
2019-01-01 23:00:29 +08:00
gfreezy
22ea00d5ff
complete "self" and "super"
2019-01-01 22:45:53 +08:00
gfreezy
f408b1caa3
complete "use crate" for "use cr" too
2019-01-01 22:10:11 +08:00
gfreezy
fc2d7d1e1f
complete crate in use stmt
2019-01-01 21:55:27 +08:00
Aleksey Kladov
acc38a9737
bump deps
2019-01-01 16:21:50 +03:00
DJMcNab
0ddeb3b824
Fix the same bug as #396 but for bytes too
2019-01-01 12:10:21 +00:00
bors[bot]
5a866a772c
Merge #396
...
396: Fix the `panic` found whilst fuzzing r=matklad,me a=DJMcNab
This occurred when a non-ascii character was used in an ascii escape, for example in the motivating example: `if'\xɿ`, which can be further simplified to `'\xɿ`.
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2019-01-01 11:11:20 +00:00
DJMcNab
0fd87cbc47
Use an else if
2019-01-01 11:10:08 +00:00
csmoe
b01e707dba
doc parser input
2019-01-01 16:09:32 +08:00
DJMcNab
72ab6f7727
Fix the panic
found whilst fuzzing
2018-12-31 23:02:04 +00:00
bors[bot]
6044ec5057
Merge #395
...
395: generalize r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-31 16:06:27 +00:00
Aleksey Kladov
862c99d0d5
generalize highlighting to work with nodes
2018-12-31 19:06:00 +03:00
Aleksey Kladov
f1e8ebfbeb
generalize extend selection to work with nodes
2018-12-31 19:01:51 +03:00
bors[bot]
2a65020442
Merge #165
...
165: Make modules with tests runnable r=farodin91 a=farodin91
Fixes #154
I having problems to traverse the path to module. The main problem is that module_tree only supports `FileId` and not `Module` in files. Any idea?
I need to clean up the code a bit later.
Co-authored-by: Jan Jansen <farodin91@googlemail.com>
2018-12-31 14:15:34 +00:00
Jan Jansen
05daa86634
Make modules with tests runnable
...
Fixes #154
2018-12-31 15:00:04 +01:00
bors[bot]
700b334a28
Merge #393
...
393: Add a fuzzing subcommand r=matklad a=DJMcNab
Part of https://github.com/rust-analyzer/rust-analyzer/issues/61#issuecomment-450641045 .
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-31 13:16:09 +00:00
DJMcNab
f61830d676
Add a fuzzing subcommand
2018-12-31 13:14:06 +00:00
Aleksey Kladov
a3ee07ac14
fix icons in completion
2018-12-31 16:06:14 +03:00
csmoe
ea7b569e1b
docing parser methods
2018-12-31 21:00:05 +08:00
bors[bot]
2746dacac0
Merge #385
...
385: Implement DocumentHighlight r=matklad a=DJMcNab
Fixes #80 .
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-31 12:37:05 +00:00
DJMcNab
be75e547ce
Use TryConv for conversion
2018-12-31 12:17:05 +00:00
DJMcNab
79941a9e70
Implement DocumentHighlight
2018-12-31 11:08:44 +00:00
dependabot[bot]
96ecd73a5c
Bump serde_json from 1.0.33 to 1.0.34
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.33...v1.0.34 )
Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 09:48:16 +00:00
dependabot[bot]
51ce71686a
Bump failure from 0.1.3 to 0.1.4
...
Bumps [failure](https://github.com/rust-lang-nursery/failure ) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/rust-lang-nursery/failure/releases )
- [Changelog](https://github.com/rust-lang-nursery/failure/blob/master/RELEASES.md )
- [Commits](https://github.com/rust-lang-nursery/failure/compare/0.1.3...0.1.4 )
Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 08:53:49 +00:00
dependabot[bot]
2d9428b54a
Bump failure_derive from 0.1.3 to 0.1.4
...
Bumps [failure_derive](https://github.com/withoutboats/failure_derive ) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/withoutboats/failure_derive/releases )
- [Commits](https://github.com/withoutboats/failure_derive/commits )
Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-12-31 05:36:03 +00:00
Aleksey Kladov
0a8d085619
remove backtraces from Cancelled
...
Hopefully we won't need them for debugging. If we do need them, it
should be easy to add back.
2018-12-31 00:38:50 +03:00
bors[bot]
acc61cc284
Merge #375
...
375: Move renames into ra_analysis and rename the correct range r=DJMcNab a=DJMcNab
Fixes #230 . Supersedes #235 .
TODO: add some tests for this
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-30 20:43:58 +00:00
DJMcNab
872950bc18
Test renames
2018-12-30 20:43:30 +00:00
bors[bot]
f9b58454a4
Merge #378
...
378: migrate-to-tempdir r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 20:33:32 +00:00
Aleksey Kladov
f0edb93df2
⬆️ tempdir
2018-12-30 23:33:04 +03:00
bors[bot]
45e3de8eed
Merge #377
...
377: update crossbeam r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 20:24:48 +00:00
Aleksey Kladov
c2c10b9014
⬆️ crossbeam
...
closes #189
2018-12-30 23:23:31 +03:00
Aleksey Kladov
effc1eae8b
migrate gen-lsp-server to new crossbeam
2018-12-30 23:02:26 +03:00
Aleksey Kladov
29a52f8d56
refine semi completion
2018-12-30 22:14:35 +03:00
DJMcNab
c402b007a3
Move renames into ra_analysis
2018-12-30 18:14:55 +00:00
bors[bot]
c0d1b17a4e
Merge #366
...
366: parse minus before number literal pattern r=matklad a=csmoe
r?@matklad
![unknown](https://user-images.githubusercontent.com/35686186/50547871-d5449e00-0c7d-11e9-9ff5-1031e78019de.png )
Co-authored-by: csmoe <csmoe@msn.com>
2018-12-30 16:40:16 +00:00
bors[bot]
942c45a31c
Merge #374
...
374: add semi after break&continue r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-30 16:25:30 +00:00
csmoe
53c94e3ad8
parse minus before number literal
2018-12-30 23:25:07 +08:00
Aleksey Kladov
822abb3e62
semies after break&continue
2018-12-30 18:08:17 +03:00
bors[bot]
0f95d8523e
Merge #365
...
365: implement struct shorthand initialization diagnostic r=matklad a=gfreezy
Co-authored-by: gfreezy <gfreezy@gmail.com>
2018-12-30 15:07:27 +00:00
gfreezy
e1ef205a19
avoid allocating an unnecessary intermediate vector & not traverse multiple times
2018-12-30 23:03:43 +08:00
gfreezy
a3520bf01d
implement struct shorthand initialization diagnostic
2018-12-30 22:26:59 +08:00
Aleksey Kladov
0f75ac1ae0
add ;
to last return in block
2018-12-30 17:22:12 +03:00
Aleksey Kladov
c182aab546
don't add () in use items
2018-12-30 16:29:10 +03:00
Aleksey Kladov
3ee7a95315
use completion context when creating completion
2018-12-30 16:20:17 +03:00
Aleksey Kladov
0e90e0436a
remove runtime dependency on tools
2018-12-30 15:28:54 +03:00
bors[bot]
8d1df9834c
Merge #358
...
358: Add support for formatting entire document with rustfmt r=matklad a=aleksanb
Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.
Part of https://github.com/rust-analyzer/rust-analyzer/issues/160 .
Co-authored-by: Aleksander Vognild Burkow <aleksanderburkow@gmail.com>
2018-12-30 10:16:22 +00:00
Aleksey Kladov
1ac934eafa
add paramthesis when completing functions
2018-12-30 12:49:07 +03:00
Aleksander Vognild Burkow
0cb270e75d
Simplify failure bail code
2018-12-30 00:21:15 +01:00
DJMcNab
5dd602f901
Reuse has_rs_extension in io.rs
2018-12-29 22:45:01 +00:00
Aleksander Vognild Burkow
ed47c93afe
Install rustfmt in rustfmt test
2018-12-29 23:38:26 +01:00
Aleksander Vognild Burkow
09c20c8fcf
Add better error message for Command failure
2018-12-29 23:38:26 +01:00
DJMcNab
07202f944c
Remove some unnecessary unwraps by using the Result::ok
...
combinatoric
2018-12-29 22:33:28 +00:00
DJMcNab
c881fc607e
Fix instance of uneeded brackets in use_statement (thanks to #333 )
2018-12-29 22:32:39 +00:00
DJMcNab
f18e25f24c
Improve comment contents
2018-12-29 22:30:54 +00:00
DJMcNab
764ddc0c85
Fix a switched line in a comment
2018-12-29 22:07:56 +00:00
Aleksander Vognild Burkow
8b24f158f7
Add support for formatting entire document with rustfmt
...
Attempting to format a document when rustfmt isn't installed will result
in an error being returned to the frontend. An alternative
implementation would be returning zero replacements.
2018-12-29 21:57:46 +01:00
Florian Diebold
4142792d1f
Add more docs in ty.rs
...
Also get rid of the indirection through query_definitions for the type-related
queries.
2018-12-29 20:27:13 +01:00
bors[bot]
4a3d6aa26a
Merge #356
...
356: Fix a bug in char literal validation discovered through fuzzing r=matklad a=DJMcNab
We also add a Cargo.lock to the fuzzing directory, as that isn't gitignored automatically, so I imagine it should be committed.
Co-authored-by: DJMcNab <36049421+djmcnab@users.noreply.github.com>
2018-12-29 12:50:34 +00:00
DJMcNab
b67a4e7a57
Add fuzz failure to the fuzz-failures directory
2018-12-29 12:45:48 +00:00
DJMcNab
054f22f231
Fix a fuzzing bug and add Cargo.lock to the fuzzing directory
2018-12-29 12:40:08 +00:00
Florian Diebold
b1590bdf6a
Missing return type means unit, not unknown
2018-12-29 12:08:57 +01:00
Florian Diebold
cfa1de72eb
Implement type variables
...
This will really become necessary when we implement generics, but even now, it
allows us to reason 'backwards' to infer types of expressions that we didn't
understand for some reason.
We use ena, the union-find implementation extracted from rustc, to keep track of
type variables.
2018-12-29 12:04:34 +01:00
Aleksey Kladov
7928995876
nameify structs&enums
2018-12-28 21:34:58 +03:00
Aleksey Kladov
11122e29b7
completion for enum variants
2018-12-28 21:07:47 +03:00
Aleksey Kladov
1a860dba38
simplify
2018-12-28 20:45:58 +03:00
Aleksey Kladov
5299a35e3d
extend selection works with macros
2018-12-28 20:33:39 +03:00
bors[bot]
7a268b9b96
Merge #350
...
350: Super simple macro support r=matklad a=matklad
Super simple support for macros, mostly for figuring out how to fit them into the current architecture. Expansion is hard-coded and string based (mid-term, we should try to copy-paste macro-by-example expander from rustc).
Ideally, we should handle
* highlighting inside the macro (done)
* extend selection inside the macro
* completion inside the macro
* indexing structs, produced by the macro
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2018-12-28 16:17:19 +00:00
Aleksey Kladov
13631a2955
⬆️ salsa
2018-12-28 19:10:31 +03:00
Aleksey Kladov
b911ee542b
move macro to a separate module
2018-12-28 18:21:30 +03:00
Aleksey Kladov
fd33c89207
switch to FileRange
2018-12-28 18:17:43 +03:00
Aleksey Kladov
02924174bb
introduce FileRange
2018-12-28 18:17:43 +03:00
Aleksey Kladov
d7440a5f49
highlight macro idents
2018-12-28 18:17:43 +03:00
Aleksey Kladov
406505e096
super simplistic macro expansion
2018-12-28 16:59:58 +03:00
Aleksey Kladov
072028e679
add macro-call node
2018-12-28 13:27:30 +03:00