Pascal Hertleif
ed89b0638b
Hash based on binding name and shadow counter
2019-05-27 11:26:35 +02:00
Pascal Hertleif
5bf3e949e8
Semantic highlighting spike
...
Very simple approach: For each identifier, set the hash of the range
where it's defined as its 'id' and use it in the VSCode extension to
generate unique colors.
Thus, the generated colors are per-file. They are also quite fragile,
and I'm not entirely sure why. Looks like we need to make sure the
same ranges aren't overwritten by a later request?
2019-05-27 11:26:33 +02:00
Aleksey Kladov
c6e905a79f
Colorize Rust code as HTML
2019-05-25 13:42:34 +03:00
Aleksey Kladov
53ae63835d
⬆️ rustc
2019-05-24 01:46:23 +03:00
Aleksey Kladov
f6d2c3f9d5
profile highlighting
2019-05-23 21:19:54 +03:00
Aleksey Kladov
5d54aa6781
add union to code_model
2019-05-23 20:18:47 +03:00
Laurențiu Nicola
f1ec88cc56
Improve highlighting of name refs
2019-05-23 15:31:35 +03:00
Laurențiu Nicola
444e52e519
Move NameRef classification logic out of reference_definition
2019-05-23 12:32:47 +03:00
bors[bot]
51e82fe6d2
Merge #1299
...
1299: Use ThemeColor and add support for light themes r=matklad a=lnicola
Part of #1294 .
- switch to `ThemeColor`
- add light and high contrast theme definitions
- highlight control flow keywords and `unsafe`
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2019-05-21 13:58:42 +00:00
Laurențiu Nicola
b08362f6d2
Address feedback
2019-05-21 16:28:10 +03:00
Laurențiu Nicola
9ade271a67
Use ThemeColor and add support for light themes
2019-05-21 14:19:08 +03:00
Aleksey Kladov
507c97a18c
⬆️ insta
2019-05-21 13:21:54 +03:00
Sergey Parilin
993abedd77
apply T! macro where it is possible
2019-05-15 15:35:47 +03:00
Aleksey Kladov
16c7405262
expand to syntax node
2019-05-14 09:03:43 +03:00
Aleksey Kladov
549728bba8
make AstId untyped
2019-05-13 19:39:06 +03:00
bors[bot]
033a32f349
Merge #1257
...
1257: Implemented tkn! macro for syntax kinds r=matklad a=pasa
Implementation of #1248
Co-authored-by: Sergey Parilin <sergey.parilin@fxdd.com>
2019-05-13 13:49:14 +00:00
Sergey Parilin
57bb618fd3
Implemented T! macro for syntax kinds
2019-05-13 15:19:57 +03:00
Aleksey Kladov
9cba67b2ad
simplify
2019-05-12 23:03:37 +03:00
Sergey Parilin
26ed925685
fill struct fields diagnostic
2019-05-06 17:16:11 +03:00
Marco Groppo
7e7ea0e79d
Profile diagnostics.
2019-05-05 16:32:53 +02:00
bors[bot]
aa7bdfd37f
Merge #1208
...
1208: [WIP] Goto for Macro's r=matklad a=Lapz
Adds goto definition for macros. Currently only works for macros in the current crate ~~otherwise it panics~~. Proper macro resolution needs to be added for it to resolve macros in other crates.
Todo
- [X] Allow goto from macro calls
- [X] Fix panics
- [x] Add tests
![Screen Recording 2019-04-25 at 18 00 24](https://user-images.githubusercontent.com/19998186/56754499-1dd01c00-6785-11e9-9e9a-1e36de70cfa3.gif )
Co-authored-by: Lenard Pratt <l3np27@gmail.com>
2019-05-04 18:38:10 +00:00
Florian Diebold
a4eb1a546c
Differentiate Tuple / FnPtr type constructors by cardinality
...
This is necessary because Chalk (reasonably) expects each 'struct' to know how
many type parameters it takes.
2019-05-04 19:11:21 +02:00
Lenard Pratt
8198e13c26
Added local macro goto
2019-05-04 17:39:51 +01:00
Aleksey Kladov
ca5aedc9bf
revert eagarly clean astd maps
...
This causes massive slowdown :-(
2019-05-04 15:29:35 +03:00
Aleksey Kladov
6c63a59425
eagarly clean astd maps
2019-05-04 11:53:44 +03:00
Florian Diebold
85633656df
Fix hover on the beginning of a nested expression
...
E.g. in
```
let foo = 1u32;
if true {
<|>foo;
}
```
the hover shows `()`, the type of the whole if expression, instead of the more
sensible `u32`. The reason for this was that the search for an expression was
slightly left-biased: When on the edge between two tokens, it first looked at
all ancestors of the left token and then of the right token. Instead merge the
ancestors in ascending order, so that we get the smaller of the two possible
expressions.
2019-04-28 16:03:49 +02:00
kjeremy
558bdf73c8
simplify match
2019-04-24 14:45:02 -04:00
kjeremy
f69bf6a12b
See through references
2019-04-24 12:09:29 -04:00
bors[bot]
6009af9b7c
Merge #1200
...
1200: Allows searching for case-equivalent symbols (fixes #1151 ) r=matklad a=jrvidal
I couldn't find a nice, functional way of calculating the ranges in one pass so I resorted to a plain old `for` loop.
Co-authored-by: Roberto Vidal <vidal.roberto.j@gmail.com>
2019-04-23 21:25:37 +00:00
Roberto Vidal
dd8c3840cb
CR corrections
2019-04-23 22:19:45 +02:00
kjeremy
a5bf0cdb97
Simplify
2019-04-23 15:44:37 -04:00
kjeremy
7125192c1e
Basic resolution for ADT
2019-04-23 14:32:47 -04:00
Roberto Vidal
b56f010201
Allows searching for case-equivalent symbols ( fixes #1151 )
2019-04-23 20:11:45 +02:00
bors[bot]
c416caeda2
Merge #1194
...
1194: Pr 1190 r=matklad a=matklad
Co-authored-by: Andrea Pretto <eulerdisk@gmail.com>
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-04-22 13:19:47 +00:00
Aleksey Kladov
c27a3da5e8
remove path_ident from CompletionContext
...
We really shouldn't be looking at the identifier at point. Instead,
all filtering and sorting should be implemented at the layer above.
This layer should probably be home for auto-import completions as
well, but, since that is not yet implemented, let's just stick this
into complete_scope.
2019-04-22 16:04:56 +03:00
Aleksey Kladov
e01052d1f0
move auto-imoprter into IDE
...
auto-import is purely an IDE concern, so it should be done outside of
HIR
2019-04-22 15:56:28 +03:00
Aleksey Kladov
b811922a53
fix postfix match indent
2019-04-22 10:38:39 +03:00
Andrea Pretto
200032852b
complete_import: prevent panic when the anchor is the completion source range
...
(fix rebase mess)
Please enter the commit message for your changes. Lines starting
2019-04-22 00:48:43 +02:00
Andrea Pretto
9144214958
complete_import: add new import resolver infrastructure with some hardcoded importable name.
...
Changes complete_scope to support that.
2019-04-22 00:14:58 +02:00
Marco Groppo
8ebb20edce
New krate() method in Resolver.
...
Renamed Impl to ImplBlock.
2019-04-20 00:20:26 +02:00
Marco Groppo
e85ee60c42
Initial support for lang items.
2019-04-20 00:10:19 +02:00
Aleksey Kladov
c4a5aa45dc
add a couple of profiling points
2019-04-15 01:10:07 +03:00
Florian Diebold
4f8a49f43c
Refactor method candidate generation a bit
...
This fixes the order in which candidates are chosen a bit (not completely
though, as the ignored test demonstrates), and makes autoderef work with trait
methods. As a side effect, this also makes completion of trait methods work :)
2019-04-14 21:53:35 +02:00
Florian Diebold
413c87f155
Get substs for trait refs in impl blocks
2019-04-14 11:28:53 +02:00
Aleksey Kladov
62d01dd4df
hide resolver
2019-04-13 11:00:15 +03:00
Aleksey Kladov
f4a94e74bc
fold ScopeWithSyntax into SourceAnalyzer
2019-04-13 10:49:01 +03:00
Aleksey Kladov
cec67b2b65
obsolete fixm
2019-04-13 09:50:02 +03:00
Aleksey Kladov
3aae223d93
hide some scopes
2019-04-13 09:31:03 +03:00
Aleksey Kladov
0fd93bc14a
use really correct resolver for expressions
2019-04-13 00:44:47 +03:00
Aleksey Kladov
20013de2ab
fix typo
2019-04-11 17:15:20 +03:00
Aleksey Kladov
ebb0c377f0
remove resolver from CompletonContext
2019-04-11 16:49:35 +03:00
Aleksey Kladov
5471c1ef4b
generalize SourceAnalyzer to handle all defs with bodies
2019-04-11 16:37:29 +03:00
Aleksey Kladov
07cc047b4f
minimize the API
2019-04-11 16:29:33 +03:00
Aleksey Kladov
b6809b6695
rename
2019-04-11 16:29:33 +03:00
Aleksey Kladov
6c2ba945ed
reduce visibility
2019-04-11 16:29:33 +03:00
Aleksey Kladov
505acc973b
Make call info to use real name resolution
2019-04-11 16:29:33 +03:00
Aleksey Kladov
10d66d63d7
introduce SourceAnalyzer
2019-04-11 16:29:33 +03:00
bors[bot]
6d9acb8753
Merge #1131
...
1131: Use inline snapshots in complete_dot r=matklad a=vipentti
Relates to #1127
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-04-10 11:05:31 +00:00
Ville Penttinen
57283b4e5f
Use inline snapshots in complete_dot
2019-04-10 13:47:20 +03:00
Ville Penttinen
1b19c1c8f2
Use inline snapshots in complete_fn_param
2019-04-10 13:22:50 +03:00
Aleksey Kladov
10726fdb65
type-safer source-map for bindings
2019-04-10 10:48:15 +03:00
Aleksey Kladov
6b993a9760
migrate to salsas interning
2019-04-09 22:51:22 +03:00
Ville Penttinen
45a2b92524
Fix doc comment
2019-04-09 16:08:24 +03:00
Ville Penttinen
07f0069f34
Move display related things from hover to display
2019-04-09 14:45:05 +03:00
Ville Penttinen
fead60aa27
Move FunctionSignature to display/function_signature
2019-04-09 14:45:05 +03:00
Ville Penttinen
bd6ddfcdde
Make display modules private
2019-04-09 14:45:05 +03:00
Ville Penttinen
7821c56be7
Move structure to display/structure
2019-04-09 14:45:05 +03:00
Ville Penttinen
027d4d229d
Move navigation_target to display/navigation_target
2019-04-09 14:45:05 +03:00
Ville Penttinen
946b5789d1
Move completion label functions to display
2019-04-09 14:45:05 +03:00
Ville Penttinen
dfaebd76ab
Add FunctionSignature::from_hir
2019-04-09 14:45:05 +03:00
Ville Penttinen
2fe075f56e
Normalize line-endings in display.rs
...
This changes from CRLF to LF
2019-04-09 14:45:05 +03:00
Ville Penttinen
f4aa15c16b
Move FunctionSignature creation to display
2019-04-09 14:45:05 +03:00
Ville Penttinen
ed65e2619a
Add no parameter test to call_info
2019-04-09 14:45:05 +03:00
Ville Penttinen
7ba22f1c19
Move FunctionSignature to display, remove write_joined
...
write_joined is replaced with `join_to_string::join` which provides the
necessary functionality.
2019-04-09 14:45:05 +03:00
Ville Penttinen
84fde47d00
Move test specific things
2019-04-09 14:45:04 +03:00
Ville Penttinen
751b454442
Update test snapshots
2019-04-09 14:45:04 +03:00
Ville Penttinen
0e49abb7fb
Refactor CallInfo function signatures to new FunctionSignature type
...
This is used by CallInfo to create a pretty printed function signature that can
be used with completions and other places as well.
2019-04-09 14:45:04 +03:00
robojumper
2caa690ef6
Rudimentarily autocomplete tuple struct field access
2019-04-06 01:10:48 +02:00
Aleksey Kladov
0de89f786f
always produce source for import
2019-04-02 17:58:04 +03:00
Aleksey Kladov
7d6bd5d137
always show token text
2019-04-02 14:49:46 +03:00
Aleksey Kladov
49f13d3a9b
fix a panic with glob-import missing a source map
2019-04-02 13:26:09 +03:00
Aleksey Kladov
5287a2506c
More future-proof comment kind
2019-04-02 12:18:52 +03:00
Aleksey Kladov
3f3ff2f0f4
fix comment naming
2019-04-02 10:48:59 +03:00
Aleksey Kladov
ae282d8da6
add ast::tokens
2019-04-02 10:23:29 +03:00
bors[bot]
b7e26c32a1
Merge #1067
...
1067: Take number of arguments at the call-site into account for signature help r=matklad a=kjeremy
Fixes #1065
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-04-01 11:15:34 +00:00
Aleksey Kladov
9e213385c9
switch to new rowan
2019-04-01 12:06:24 +03:00
kjeremy
80113876e2
Simplify
2019-03-27 11:02:06 -04:00
kjeremy
7b34c4c002
Take number of arguments at the call-site into account for signature help
...
Fixes #1065
2019-03-27 10:00:51 -04:00
bors[bot]
a82755e241
Merge #1059
...
1059: Typed ids r=matklad a=matklad
just some type-safety and refactorings.
closes https://github.com/rust-analyzer/rust-analyzer/issues/1054
bors r+
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-03-26 16:16:54 +00:00
Aleksey Kladov
e28db444df
rename
2019-03-26 19:11:01 +03:00
Wilco Kusee
e03189c110
Move ra_ide_api unit tests
2019-03-25 21:03:32 +01:00
bors[bot]
c4ead49361
Merge #1034
...
1034: HIR diagnostics API r=matklad a=matklad
This PR introduces diagnostics API for HIR, so we can now start issuing errors and warnings! Here are requirements that this solution aims to fulfill:
* structured diagnostics: rather than immediately rendering error to string, we provide a well-typed blob of data with error-description. These data is used by IDE to provide fixes
* open set diagnostics: there's no single enum with all possible diagnostics, which hopefully should result in better modularity
The `Diagnostic` trait describes "a diagnostic", which can be downcast to a specific diagnostic kind. Diagnostics are expressed in terms of macro-expanded syntax tree: they store pointers to syntax nodes. Diagnostics are self-contained: you don't need any context, besides `db`, to fully understand the meaning of a diagnostic.
Because diagnostics are tied to the source, we can't store them in salsa. So subsystems like type-checking produce subsystem-local diagnostic (which is a closed `enum`), which is expressed in therms of subsystem IR. A separate step converts these proto-diagnostics into `Diagnostic`, by merging them with source-maps.
Note that this PR stresses type-system quite a bit: we now type-check every function in open files to compute errors!
Discussion on Zulip: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Diagnostics.20API
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-03-25 11:38:46 +00:00
Aleksey Kladov
309716cffe
move tests to where they belong
2019-03-25 14:29:24 +03:00
Sergey Parilin
36cb58f76d
structure moved to ra_ide_api
...
ra_ide_api_light removed completely
2019-03-25 11:41:21 +03:00
Aleksey Kladov
e9af69d9db
simplify
2019-03-25 10:56:55 +03:00
Aleksey Kladov
5ce84f3cbc
tweak diagnostics API
2019-03-25 10:52:50 +03:00
Aleksey Kladov
c7ffd939f6
more enterprisey diagnostics setup
2019-03-25 10:52:50 +03:00
Aleksey Kladov
7ee2887d1e
fixes
2019-03-25 10:52:50 +03:00
Aleksey Kladov
45fbab2b1a
check impls as well
2019-03-25 10:52:50 +03:00
Aleksey Kladov
79df62bc74
cleanup
2019-03-25 10:52:50 +03:00
Aleksey Kladov
3fb88e95aa
switch modules to new diagnostics
2019-03-25 10:52:50 +03:00
Aleksey Kladov
fcca35969d
allow dyn diagnostics
2019-03-25 10:52:12 +03:00
Aleksey Kladov
7e8f17188e
diagnostics
2019-03-25 10:52:12 +03:00
Ville Penttinen
4d26bae46d
Rename source_edit to source_file_edit to match file_system_edit
2019-03-25 09:13:58 +02:00
Ville Penttinen
b92fcbc956
Further improvements to the SourceChange convenience methods
...
Rename system_edit to file_system_edit, add more documentation, add
source_file_edit_from to create a SourceChange from `FileId` and `TextEdit`.
2019-03-25 09:03:10 +02:00
Ville Penttinen
22e1c7a112
Add convenience functions to SourceChange for creating single edits
2019-03-24 22:53:41 +02:00
bors[bot]
18a8f48039
Merge #1031
...
1031: Move most things out of ra_ide_api_light r=matklad a=detrumi
This moves everything except `structure` out of `ra_ide_api_light`. So this PR and #1019 finish up #1009 , whichever is merged last should probably remove the `ra_ide_api_light` crate.
Also, `LocalEdit` was removed since it wasn't used any more.
Co-authored-by: Wilco Kusee <wilcokusee@gmail.com>
2019-03-23 17:25:40 +00:00
Wilco Kusee
a3711e08dc
Move highlighting and matching_brace
2019-03-23 17:34:49 +01:00
Wilco Kusee
a656b891fb
Remove LocalEdit usage
2019-03-23 17:00:49 +01:00
Aleksey Kladov
46a21b07e6
remove obsolete diagnostic
2019-03-23 16:31:11 +03:00
Aleksey Kladov
3f0cf6ebe1
rename persistent hir database -> def database
2019-03-23 15:44:24 +03:00
bors[bot]
331220fee2
Merge #1025
...
1025: Disable fork feature for proptest r=matklad a=detrumi
Co-authored-by: Wilco Kusee <wilcokusee@gmail.com>
2019-03-23 12:09:07 +00:00
Wilco Kusee
0c15deac76
Move typing to ra_ide_api
2019-03-23 12:11:46 +01:00
Aleksey Kladov
4fd8cfd6ad
replace todo with fixme
2019-03-23 11:07:09 +03:00
Wilco Kusee
497934a7b4
Disable fork feature for proptest
2019-03-23 08:57:07 +01:00
bors[bot]
15189bc724
Merge #1021
...
1021: Wasm dependencies r=matklad a=detrumi
As a first step towards running RA on WASM (see #1007 ), this tweaks the dependencies somewhat so that projects built using `wasm-pack` can use `ra_ide_api` as a dependency.
There were two problems:
- use of undeclared type or module `MmapInner`
This error occurred because of the `memmap` crate, as a dependency of `fst`
Solution: specify `default-features = false` for the `fst` package (see https://github.com/BurntSushi/fst/issues/70 )
- use of undeclared type or module `imp`
This happened in the `wait-timeout` crate ([which uses `Command` under the hood](https://github.com/alexcrichton/wait-timeout/issues/18 )), a dependency of `rusty-fork` which is a dependency of `proptest`.
Solution: move `proptest` to dev-dependencies and add `#[cfg(test)]` to the `test_utils` crate.
**Edit:** Oh, that causes trouble with resolving the import when running the tests. Hmm...
Co-authored-by: Wilco Kusee <wilcokusee@gmail.com>
2019-03-22 20:22:37 +00:00
Wilco Kusee
4e6d0933cc
Disable memmap feature in fst dependency
2019-03-22 21:22:03 +01:00
Wilco Kusee
01bca7114c
Simplify changes and fix tests
2019-03-22 17:12:32 +01:00
Wilco Kusee
9bd8336c51
Remove LocalEdit usage
2019-03-22 17:12:32 +01:00
Wilco Kusee
58e77660de
Move join_lines to ra_ide_api
2019-03-22 17:12:31 +01:00
Sergey Parilin
47c501bcfb
Move folding_ranges to ra_ide_api
2019-03-22 16:31:21 +03:00
Sergey Parilin
fda70badf8
line_index and line_index_utils moved to ra_ide_api
2019-03-22 15:24:43 +03:00
Florian Diebold
cbb418ebb8
Rename name field to ctor as well
2019-03-21 22:29:12 +01:00
Florian Diebold
f10f5a81b3
TypeName => TypeCtor
2019-03-21 22:20:03 +01:00
Florian Diebold
8a5fbf4713
Remove the old variants replaced by Ty::Apply
2019-03-21 22:17:00 +01:00
Aleksey Kladov
1b58e3e410
cleanup
2019-03-21 19:21:58 +03:00
Aleksey Kladov
7cae9ddeeb
move diagnostics to ide_api
2019-03-21 19:08:54 +03:00
Aleksey Kladov
b931a472c4
move extend selection from ra_ide_api_light to ra_ide_api
2019-03-20 23:52:55 +03:00
Aleksey Kladov
3eb56f7a6a
introduce Analysis::from_single_file
2019-03-20 23:38:59 +03:00
Aleksey Kladov
6955e392f8
remove old macro support
2019-03-17 12:53:22 +03:00
Aleksey Kladov
b2a6c17362
remove lower module
2019-03-17 12:52:52 +03:00
Aleksey Kladov
2195d1db6d
Replace module_tree with CrateDefMap
2019-03-17 12:49:07 +03:00
Florian Diebold
c5ee60e05b
Replace Display by a pretty printing trait for Ty
...
This allows removing the names from Adt and FnDef (and more later), as a first
step towards aligning more with chalk's Ty :)
2019-03-16 16:36:59 +01:00
Aleksey Kladov
8774067a87
sort navigations to make tests stable
2019-03-14 13:28:45 +03:00
kjeremy
27fc99776f
Remove superfluous semicolons
...
Doesn't change the result of the test but it does prevent the
syntax tree from rendering.
2019-03-08 16:45:26 -05:00
Ville Penttinen
b168104d95
Use ast::Name::text() instead of name().syntax().text()
2019-03-07 20:58:41 +02:00
Ville Penttinen
5c0556c2ca
Fix EnumVariants not showing properly when hovering
...
This fixes documentation as well for EnumVariants
2019-03-07 20:33:33 +02:00
Ville Penttinen
4a0bb3d7c5
Add support for goto definition and hover on Self
...
This fixes #943
2019-03-07 17:34:44 +02:00
kjeremy
064707c5a0
Use source map
2019-03-06 14:40:42 -05:00
kjeremy
aac421b135
Hover for associated items in patterns
2019-03-06 11:39:11 -05:00
kjeremy
eb3ee7b8e5
Updates
2019-03-05 10:26:36 -05:00
Aleksey Kladov
d1c982d3c7
dont produce giant debug dumps
2019-03-05 17:09:48 +03:00
kjeremy
1578375b89
Make ExpOrPatId private
2019-03-04 09:49:18 -05:00
Jeremy Kolb
79f61dcb0e
Format
2019-03-04 08:34:41 -05:00
Jeremy Kolb
e1b59bfe0b
Add NavigationTarget::from_impl_item
2019-03-04 08:27:08 -05:00
Jeremy Kolb
3d8d880c59
Use ImplItems instead of just Function
2019-03-04 08:27:08 -05:00
kjeremy
49da9a3e81
Make goto definition/hover resolve constructors
2019-03-04 08:27:08 -05:00
Ville Penttinen
1ef2c06131
Allow syntax strings to contain test markers
...
We simply remove all the CUSTOM_MARKERS before attempting to parse the file.
This allows for the syntax selection to work with most of the test strings.
2019-03-04 09:19:46 +02:00
Ville Penttinen
16ecd276f0
Implement syntax tree support for syntax inside string
...
This allows us to select a string or portions of it and try parsing it as rust
syntax. This is mostly helpful when developing tests where the test
itself contains some rust syntax as a string.
2019-03-04 09:02:01 +02:00
Ville Penttinen
ac52d9a1f1
Add optional range parameter to SyntaxTreeParams
...
When range is provided, instead of showing the syntax for the whole file, we'll
show the syntax tree for the given range.
2019-03-03 19:49:50 +02:00
Florian Diebold
affaf7700a
Represent unknown types as {unknown} instead of [unknown]
...
Since the latter could actually be a real type...
2019-03-03 03:00:17 +01:00
bors[bot]
00b09bcd8c
Merge #908
...
908: Enable markup for hover on expressions which resolve using type_of r=matklad a=vipentti
This adds highlighting when hovering over items which are resolved using
`type_of`.
This adds basic highlighting, discussed in #904 .
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-03-02 14:21:44 +00:00
Aleksey Kladov
8fc08d36e3
remove second way to get the body
2019-03-02 16:59:18 +03:00
Aleksey Kladov
03b2ab8e1f
rename syntax_mapping as well
2019-03-02 16:56:09 +03:00
Aleksey Kladov
80bb7d86ec
align lower module query names
2019-03-02 16:49:06 +03:00
Aleksey Kladov
f4c5383103
dont store body inside source map
2019-03-02 16:18:40 +03:00
Aleksey Kladov
eaf1df26e9
rename syntax-mapping -> source-map
2019-03-02 15:40:40 +03:00
kjeremy
d0efa77e0e
Update hover message since we do support globs
2019-02-28 14:48:21 -05:00
Ville Penttinen
da26820ebd
Enable markup for hover on expressions which resolve using type_of
...
This adds highlighting when hovering over items which are resolved using
`type_of`.
2019-02-28 09:33:06 +02:00
Ville Penttinen
c879f43186
Enable hover support for NamedFieldDefs
...
Additionally add type ascription for const and statics as well.
2019-02-27 17:52:37 +02:00
Ville Penttinen
bb4521be1c
Allow goto-definition to work for named fields in struct initializer
...
Now goto definition should work when done on a named field in a struct
initializer.
2019-02-27 17:51:59 +02:00
Ville Penttinen
e3525527e3
Add support for hovering over the name of an item
2019-02-27 09:49:22 +02:00
Ville Penttinen
79114c67b1
Replace visit_fn with crate::completion::function_label
2019-02-26 21:30:46 +02:00
Ville Penttinen
6f5fd6c9de
Add new type HoverResult to contain the results of hovering
...
This makes testing hovers easier as well as allows us to do more things with the
results if needed.
2019-02-26 19:30:17 +02:00
Ville Penttinen
3ec2584148
Add support for showing fn signature when hovering
2019-02-26 18:55:08 +02:00
Aleksey Kladov
78f10fcdc4
rename type to type_alias in the AST as well
2019-02-25 13:49:32 +03:00
Aleksey Kladov
330ce2e26b
complete patterns
2019-02-24 23:50:02 +03:00
Florian Diebold
bd8ed644e4
Rename Type => TypeAlias
2019-02-24 21:36:49 +01:00
Aleksey Kladov
d5f6a5f5e2
move testing functions
2019-02-24 21:54:13 +03:00
Aleksey Kladov
98510ec5d3
move the rest of presentation to presentation
2019-02-24 21:46:04 +03:00
Aleksey Kladov
b7a7872910
move more code to presentation
2019-02-24 21:34:38 +03:00
Aleksey Kladov
a650a93bf5
move res completion to presentation
2019-02-24 21:21:31 +03:00
Aleksey Kladov
2369af8c82
simplify
2019-02-24 20:59:12 +03:00
Aleksey Kladov
5887c0e574
move enum-variants to presentation
2019-02-24 20:56:53 +03:00
Aleksey Kladov
9af525dbd6
simplify
2019-02-24 20:49:55 +03:00
Aleksey Kladov
3c7c5a7354
move presentaion completion to presentation
2019-02-24 19:37:22 +03:00
Aleksey Kladov
b04cadc02c
move function rendering to presentation
2019-02-24 19:34:27 +03:00
Aleksey Kladov
d0a261468e
introduce completion presentation
...
This module should remove completion rendering boilerplate from the
"brains" of completion engine.
2019-02-24 18:51:38 +03:00
Aleksey Kladov
6285fcc39b
complete fields in struct literals
2019-02-24 17:39:08 +03:00
Aleksey Kladov
65a2be4953
complete struct literals
2019-02-24 17:01:56 +03:00
Aleksey Kladov
ef442b8682
Assign IDs to assists
2019-02-24 14:00:00 +03:00
Ville Penttinen
40e6cb196b
Remove unnecessary to_nav_target
2019-02-23 14:08:57 +02:00
Ville Penttinen
c565ec2d6e
Add name_range field to FileSymbol
...
This contains the syntax range of the name itself, allowing NavigationTarget to
properly set the focus_range. This should make it so that when using symbol
based navigation, we should always focus on the name, instead of the full range.
2019-02-23 13:05:45 +02:00
Ville Penttinen
7046b16275
Fix NavigationTarget debug_render container_name output
2019-02-23 12:53:53 +02:00
Ville Penttinen
2a3abe2ce3
Fix goto def not working when cursor was over the name of a def
...
We now allow goto_definition to return the named NavigationTarget if the cursor
is on the name of a definition.
2019-02-23 11:02:42 +02:00
bors[bot]
3d8a0982a1
Merge #866
...
866: Implement basic support for Associated Methods r=flodiebold a=vipentti
This is my attempt at learning to understand how the type inference works by adding basic support for associated methods. Currently it does not resolve associated types or constants.
The basic idea is that `Resolver::resolve_path` returns a new `PathResult` type, which has two variants, `FullyResolved` and `PartiallyResolved`, fully resolved matches the previous behavior, where as `PartiallyResolved` contains the `PerNs<Resolution` in addition to a `segment_index` which contains the index of the segment which we failed to resolve. This index can then be used to continue inference in `infer_path_expr` using the `Type` we managed to resolve.
This changes some of the previous apis, so looking for feedback and suggestions.
This should enable fixing #832
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-02-22 19:58:22 +00:00
Ville Penttinen
247d1c17b3
Change resolve_path to return the fully resolved path or PerNs::none
...
This also adds new pub(crate) resolve_path_segments which returns the
PathResult, which may or may not be fully resolved. PathResult is also now
pub(crate) since it is an implementation detail.
2019-02-22 10:15:23 +02:00
bors[bot]
bb665a7062
Merge #864
...
864: Fix handling of generics in tuple variants and refactor a bit r=matklad a=flodiebold
(The problem was that we created separate substitutions for the return value, so we lost the connection between the type arguments in the constructor call and the type arguments of the result.)
Also make them display a tiny bit nicer.
Fixes #860 .
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
Co-authored-by: Florian Diebold <florian.diebold@freiheit.com>
2019-02-21 20:47:50 +00:00
Aleksey Kladov
f7f99af0a6
kill utils module
2019-02-21 15:57:40 +03:00
Ville Penttinen
816971ebc9
Implement basic support for Associated Methods and Constants
...
This is done in `infer_path_expr`. When `Resolver::resolve_path` returns
`PartiallyResolved`, we use the returned `Resolution` together with the given
`segment_index` to check if we can find something matching the segment at
segment_index in the impls for that particular type.
2019-02-21 12:25:55 +02:00
Florian Diebold
72712b8a42
Fix handling of generics in tuple variants and refactor a bit
...
Also make them display a tiny bit nicer.
Fixes #860 .
2019-02-20 22:48:55 +01:00
Aleksey Kladov
9738fb48a6
remove ignored macro tests
...
we need to significantly reengineer macros, so the tests as they exist
are useless
2019-02-19 20:06:53 +03:00
Aleksey Kladov
a92db7c848
more compact edits in insta
2019-02-18 12:24:25 +03:00
Aleksey Kladov
92aa0f9c87
Don't use additional_text_edits API internally
2019-02-18 12:24:20 +03:00
Aleksey Kladov
79f35cc699
More orthogonal method naming
2019-02-18 12:07:47 +03:00
Aleksey Kladov
864fd5ee25
More compact debug representation for completion
2019-02-18 10:31:00 +03:00
Aleksey Kladov
e503ffe9ff
Don't render ()
in calls to assoc functions
2019-02-17 21:30:46 +03:00
bors[bot]
982f72c022
Merge #844
...
844: Refactor find_all_refs to return ReferenceSearchResult r=vipentti a=vipentti
This refactors `find_all_refs` to return a new `ReferenceSearchResult` based on feedback in #839 .
There are few questions/notes regarding the refactor:
1. Introducing `NavigationTarget::from_bind_pat` this simply forwards the call to `NavigationTarget::from_named`, could we just expose `from_named` directly as `pub(crate)` ?
2. Added an utility method `NavigationTarget::range` since there were few places where you would use `self.focus_range.unwrap_or(self.full_range)`
3. Implementing `IntoIterator` for `ReferenceSearchResult`. This turns `ReferenceSearchResult` into an iterator over `FileRanges` and allows previous code to mostly stay as it was based on the order that `find_all_refs` previously had (declaration first and then the references). I'm not sure if there is a way of doing the conversion to `IntoIter` without the allocation of a new vector
4. Is it possible to have a binding without a name? I'm not sure if the `NavigationTarget::from_bind_pat` can cause some edge-cases that previously were ok
This fixes #835 .
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-02-17 15:38:33 +00:00
Ville Penttinen
fd5307e60d
Remove leading ::
2019-02-17 17:25:19 +02:00
Florian Diebold
795d718ba1
Unify with the autorefed/autoderefed receiver type during method resolution
2019-02-17 14:44:39 +01:00
Ville Penttinen
85a6bf3424
Refactor find_all_refs to return ReferenceSearchResult
2019-02-17 13:40:43 +02:00
Florian Diebold
0242acae53
Turn ImplBlock into a copy type just containing IDs
...
This makes it more like the other code model types.
Also make Module::definition_source/declaration_source return HirFileIds, to
make them more like the other source functions.
2019-02-16 22:08:13 +01:00
Aleksey Kladov
2d131d63f9
document design guideline
2019-02-16 15:15:52 +03:00
Aleksey Kladov
469301b603
use better label for &mut ref completion
2019-02-14 21:34:06 +03:00
bors[bot]
10bf61b83b
Merge #831
...
831: tweak postfix completions r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-02-14 17:38:51 +00:00
Aleksey Kladov
5f8ec8aa10
tweak postfix completions
...
* better label
* add refm for &mut
2019-02-14 20:38:26 +03:00
Aleksey Kladov
434f1520df
add ref postfix template
2019-02-14 20:13:39 +03:00
Jeremy Kolb
1cd5966462
Be precise about the argument list
...
Fixes #812
2019-02-14 10:28:48 -05:00
Florian Diebold
911e32bca9
Complete names from prelude
2019-02-13 21:13:08 +01:00
Florian Diebold
3a9934e2c3
Keep track of crate edition
2019-02-13 20:10:46 +01:00
Ville Penttinen
3973974de1
Fix possible issue where unnamed is_symbol_def would pop stack wrongly
...
This removes is_symbol_def as unnecessary.
2019-02-13 18:02:18 +02:00
Ville Penttinen
0c37a9cc28
Use cloned over map + clone
2019-02-13 17:42:15 +02:00
Ville Penttinen
d9905f7be5
Use clone directly rather than map + clone
2019-02-13 17:28:15 +02:00
Ville Penttinen
2ef6c469ef
Remove unnecessary braces
2019-02-13 11:08:25 +02:00
Ville Penttinen
dd6307ddc4
Add support for container_name in workspace/symbol query
2019-02-12 22:06:14 +02:00
Laurențiu Nicola
040fb91387
Filter attributes from the completion details/label
2019-02-12 20:35:10 +02:00
Pascal Hertleif
4fd3613434
Fix some typos
2019-02-12 15:02:57 +01:00
Laurențiu Nicola
7e8527f748
Implement completion for associated items
2019-02-12 12:51:01 +02:00
Aleksey Kladov
8ef80086a0
fix regression in self-referential completion
2019-02-11 23:43:24 +03:00
Aleksey Kladov
0d060b073c
remove hard-coded query-group macro
2019-02-11 22:24:39 +03:00
Aleksey Kladov
58ed8ee665
use extern prelude in Resolver
...
This fixes two bugs:
- completion for paths works again
- we handle extern prelude shadowing more correctly
2019-02-11 15:41:39 +03:00
Ville Penttinen
710975ecd8
Fix typo in Cargo.toml authors
...
Fixes typo introduced in #782
2019-02-11 10:20:04 +02:00
Ville Penttinen
ab3d231b1d
Update authors field in Cargo.tomls to "rust-analyzer developers"
...
This closes #777
2019-02-11 08:55:35 +02:00
Aleksey Kladov
12e3b4c70b
reformat the world
2019-02-08 14:49:43 +03:00
Aleksey Kladov
884f04670a
diagnostics is now a function
2019-02-08 14:34:30 +03:00
Aleksey Kladov
8328e196dd
move diagnostics to a separate file
2019-02-08 14:34:30 +03:00
Aleksey Kladov
e4a6343e47
move index_resolve to symbol index
2019-02-08 14:34:30 +03:00
Aleksey Kladov
5173c6295b
move find_references to references
2019-02-08 14:34:30 +03:00
Aleksey Kladov
4d0e58afef
rename rename to references
2019-02-08 14:34:30 +03:00
Aleksey Kladov
bddd124298
move crate for
2019-02-08 14:34:30 +03:00
Aleksey Kladov
842e8001b2
move changes to a separate file
2019-02-08 14:34:30 +03:00
kjeremy
6753051a45
Some clippy cleanups
2019-02-06 15:50:26 -05:00
Aleksey Kladov
0c5fd8f7cb
move assists to a separate crate
2019-02-06 17:00:00 +03:00
Jeremy Kolb
e696342afa
Rename assits to assists
2019-02-05 08:13:16 -05:00
bors[bot]
4183825475
Merge #740
...
740: Update dependencies r=kjeremy a=kjeremy
Co-authored-by: kjeremy <kjeremy@gmail.com>
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-02-05 12:16:25 +00:00
Florian Diebold
699ce06ac3
Complete extern prelude (again)
2019-02-04 22:09:56 +01:00
Florian Diebold
ccef48b6c3
Make it possible to have multiple crate in a mock analysis fixture
2019-02-04 21:49:34 +01:00
kjeremy
8ec4b84013
Bump insta and proptest to latest
2019-02-04 14:11:51 -05:00
Aleksey Kladov
dbf9820e35
make HirDatabase object-safe
2019-02-03 22:15:31 +03:00
gfreezy
bfaefed3f6
fill match arm
2019-02-04 00:27:36 +08:00
Hoàng Đức Hiếu
9dd7ccf609
fold complete_postfix tests into one
2019-02-03 20:12:57 +07:00
Hoàng Đức Hiếu
1c5a63e3db
add postfix completion for dbg!()
with .dbg
2019-02-02 22:10:18 +07:00
Florian Diebold
c5852f422f
Some cleanup and additional tests
2019-02-01 23:24:26 +01:00
Florian Diebold
d571d26955
Make the Resolution variants tuple variants
2019-02-01 22:54:30 +01:00
Florian Diebold
d3df80dfe4
Cleanup
2019-02-01 22:54:21 +01:00
Florian Diebold
afce8e4426
Use the new Resolver API for goto def
2019-02-01 22:45:43 +01:00
Florian Diebold
33ff7b56ff
Use the new Resolver API in completion
2019-02-01 22:45:25 +01:00
csmoe
4dffdcf14a
split HirDatabase api
2019-02-01 22:05:24 +08:00
Aleksey Kladov
de85f1e947
remove hard-coded support for ctry macro
...
It was used mainly to prevent HirFileId infra from bitroting, but the
`vec![]` macro can serve that just as well!
2019-02-01 10:52:36 +03:00
kjeremy
f0fdc9d5c0
Go To Implementation for Trait
2019-01-31 18:34:52 -05:00
bors[bot]
b704ce803b
Merge #702
...
702: Go to Implementation r=matklad a=kjeremy
First half of #620
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-01-30 19:19:31 +00:00
kjeremy
04eb15856b
Resolve crate
2019-01-30 13:18:21 -05:00
Jeremy Kolb
b88ba007cc
Pass Documentation up to LSP and add "rust" to our codeblocks there
2019-01-29 21:39:09 -05:00
Jeremy Kolb
3c17643b30
Go to Implementation for structs and enums
2019-01-29 19:13:02 -05:00
Aleksey Kladov
2ee08098a6
opt-in jemalloc
2019-01-28 15:52:21 +03:00
bors[bot]
7abe1f422c
Merge #678
...
678: WIP: automatically collect garbage r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-28 11:39:02 +00:00
Aleksey Kladov
53e3e82d91
update salsa
2019-01-28 13:53:32 +03:00
Florian Diebold
cf5c99271d
Sort completions in tests
2019-01-27 22:51:20 +01:00
Aleksey Kladov
b4c8baadb1
tweak words
2019-01-27 22:57:18 +03:00
Aleksey Kladov
c7f4e3a401
show jemalloc
2019-01-27 22:57:18 +03:00
Aleksey Kladov
09b5dc8e02
drop obsolete comment
2019-01-27 22:57:18 +03:00
Aleksey Kladov
7801f6b50f
automatically collect garbage
2019-01-27 22:57:18 +03:00
bors[bot]
3f4f50baaa
Merge #690
...
690: Fix module resolution for non standard filenames r=matklad a=regiontog
fixes #668
Co-authored-by: Erlend Tobiassen <erlend.tobiassen@gmail.com>
2019-01-27 15:55:47 +00:00
bors[bot]
b2b62b9579
Merge #691
...
691: remove dead code r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-27 15:08:23 +00:00
Aleksey Kladov
154bce1864
remove dead code
2019-01-27 18:07:45 +03:00
Erlend Tobiassen
5052bf9889
Update test to use correct paths
2019-01-27 15:19:41 +01:00
bors[bot]
ffcf618842
Merge #662
...
662: Preserve indentation in doc comments r=matklad a=kjeremy
Fixes #502
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-27 08:21:04 +00:00
Aleksey Kladov
f78b092629
fix panic in call info
...
closes #317
closes #675
2019-01-27 00:34:18 +03:00
Jeremy Kolb
a892067951
Make doc comments optional
2019-01-26 10:35:23 -05:00
Aleksey Kladov
9457b1f0e6
rename source_file -> parse
2019-01-26 11:51:36 +03:00
Aleksey Kladov
4711cbcace
rename FilesDatabase -> SourceDatabase
2019-01-26 11:20:30 +03:00
Aleksey Kladov
3223de5976
move ide queries to ide db
2019-01-26 11:17:05 +03:00
Aleksey Kladov
be1a005ebd
fold syntax database into files database
2019-01-26 11:09:39 +03:00
Aleksey Kladov
1fd18f020d
⬆️ salsa
2019-01-25 23:27:16 +03:00
Aleksey Kladov
27a085f79e
print one size for symbols
2019-01-25 23:06:23 +03:00
Jeremy A. Kolb
7a0bc2dd64
Add docs to struct fields
2019-01-25 14:29:56 -05:00
Aleksey Kladov
50a7598773
print one size for symbols
2019-01-25 21:10:51 +03:00
bors[bot]
aae69bc897
Merge #647
...
647: fix todo r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 18:01:56 +00:00
Aleksey Kladov
d0cf4306bd
fix todo
2019-01-25 20:55:38 +03:00
bors[bot]
cc73d3ccbc
Merge #646
...
646: Add module documentation support r=matklad a=kjeremy
Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-25 17:55:29 +00:00
Jeremy A. Kolb
6588579116
Add module documentation support
2019-01-25 12:51:36 -05:00
bors[bot]
daaba4be17
Merge #645
...
645: WIP: support goto for fields. r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 17:38:49 +00:00
Aleksey Kladov
9f2574c97e
add ability to get strcut field source
2019-01-25 20:38:03 +03:00
bors[bot]
bce0c6267a
Merge #644
...
644: EnumVariant details for completion r=matklad a=kjeremy
Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-25 17:02:30 +00:00
Jeremy A. Kolb
9a97c10fda
EnumVariant details for completion
2019-01-25 11:50:59 -05:00
Aleksey Kladov
f6adb85b68
add gc request
2019-01-25 19:11:58 +03:00
Aleksey Kladov
046ae1d361
more stats
2019-01-25 17:25:23 +03:00
Aleksey Kladov
8d68b76ba0
better stats
2019-01-25 16:16:42 +03:00
bors[bot]
021e691997
Merge #639
...
639: Update salsa r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 12:34:10 +00:00
Aleksey Kladov
08c12e424d
use set methods
2019-01-25 15:25:01 +03:00
Aleksey Kladov
8cf092d5de
:arrow_up salsa
2019-01-25 15:16:50 +03:00
Aleksey Kladov
87ac5f5b36
use positional ids for fields
2019-01-25 14:21:14 +03:00
Aleksey Kladov
87288d802c
pack enum variants into arena
2019-01-25 12:50:46 +03:00
Aleksey Kladov
bc77f91cf6
rename def_id -> def
2019-01-25 10:16:28 +03:00
Aleksey Kladov
e884ab05c2
write path resolution code only once
2019-01-25 10:15:10 +03:00
bors[bot]
c42db0bbd7
Merge #623
...
623: WIP: module id is not def id r=matklad a=matklad
This achieves two things:
* makes module_tree & item_map per crate, not per source_root
* begins the refactoring to remove universal `DefId` in favor of having separate ids for each kind of `Def`. Currently, only modules get a differnt ID though.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-24 22:56:13 +00:00
Aleksey Kladov
ff9c5bef7b
ModuleDef is Def-free
2019-01-25 01:32:47 +03:00
Aleksey Kladov
0f2f3a21e7
Migrate trait & type to new ids
2019-01-25 01:31:32 +03:00
Aleksey Kladov
1db2cbcb8b
move consts&statics to new id
2019-01-25 00:50:08 +03:00
Aleksey Kladov
6a5a1f5902
adapt ide_api to the new API
2019-01-24 23:36:16 +03:00