Aleksey Kladov
084bd304f3
Switch ast declaration from ron to a macro
2020-01-03 21:54:10 +01:00
bors[bot]
cb160f2a34
Merge #2742
...
2742: Split `infer` query into two for better profiling r=flodiebold a=michalt
This is the same change as we did with `crate_def_map` and it does seem
that we mostly spend time in salsa, without recomputing much on
rust-analyzer side.
Example output:
```
233ms - handle_inlay_hints
163ms - get_inlay_hints
163ms - SourceAnalyzer::new
67ms - def_with_body_from_child_node
67ms - analyze_container
67ms - analyze_container
67ms - Module::from_definition
67ms - Module::from_file
67ms - crate_def_map
0ms - parse_macro_query (6 calls)
0ms - raw_items_query (1 calls)
66ms - ???
0ms - crate_def_map (1 calls)
0ms - crate_def_map (1 calls)
96ms - infer
2ms - trait_solve_query (2 calls)
94ms - ???
0ms - body_with_source_map_query (1 calls)
0ms - crate_def_map (1 calls)
[...]
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Co-authored-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 19:08:32 +00:00
Michal Terepeta
d6c2a59538
Split infer
query into two for better profiling
...
This is the same change as we did with `crate_def_map` and it does seem
that we mostly spend time in salsa, without recomputing much on
rust-analyzer side.
Example output:
```
233ms - handle_inlay_hints
163ms - get_inlay_hints
163ms - SourceAnalyzer::new
67ms - def_with_body_from_child_node
67ms - analyze_container
67ms - analyze_container
67ms - Module::from_definition
67ms - Module::from_file
67ms - crate_def_map
0ms - parse_macro_query (6 calls)
0ms - raw_items_query (1 calls)
66ms - ???
0ms - crate_def_map (1 calls)
0ms - crate_def_map (1 calls)
96ms - infer
2ms - trait_solve_query (2 calls)
94ms - ???
0ms - body_with_source_map_query (1 calls)
0ms - crate_def_map (1 calls)
[...]
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 19:58:11 +01:00
Edwin Cheng
ff5883637c
Fix unused import for windows in cargo_watch test
2020-01-04 01:18:46 +08:00
Wilco Kusee
e7bb82c3a4
Allow disabling Cargo.toml not found error
2020-01-03 15:04:54 +01:00
Florian Diebold
67240c8d91
Fix #2705
...
The `-` turned into a `+` during a refactoring.
The original issue was caused by `Read` resolving wrongly to a trait without
type parameters instead of a struct with one parameter; this only fixes the
crash, not the wrong resolution.
2020-01-03 14:57:11 +01:00
Wilco Kusee
6c321d7318
Move error to new file
2020-01-03 14:34:16 +01:00
Michal Terepeta
2e2e443560
Add _query
suffix to compute_crate_def_map
for consistency
...
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 14:20:24 +01:00
Wilco Kusee
2202891221
Split errors into WorkspaceError enum
2020-01-03 14:04:46 +01:00
Michal Terepeta
7cd6f12926
Split crate_def_map
into two methods
...
This change:
- introduces `compute_crate_def_map` query and renames
`CrateDefMap::crate_def_map_query` for consistency,
- annotates `crate_def_map` as `salsa::transparent` and adds a
top-level `crate_def_map` wrapper function around that starts the
profiler and immediately calls into `compute_crate_def_map` query.
This allows us to better understand where we spent the time, in
particular, how much is spent in the recomputaiton and how much in
salsa.
Example output (where we don't actually re-compute anything, but the
query still takes a non-trivial amount of time):
```
211ms - handle_inlay_hints
150ms - get_inlay_hints
150ms - SourceAnalyzer::new
65ms - def_with_body_from_child_node
65ms - analyze_container
65ms - analyze_container
65ms - Module::from_definition
65ms - Module::from_file
65ms - crate_def_map
1ms - parse_macro_query (6 calls)
0ms - raw_items_query (1 calls)
64ms - ???
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 13:59:46 +01:00
bors[bot]
e423cfe383
Merge #2730
...
2730: Add `profile` calls to {Module,Function}::diagnostics r=matklad a=michalt
With this change the output `ra_prof` gives a better indication where
the time is spent. Example output:
```
213ms - publish_diagnostics
213ms - diagnostics
70ms - Module::from_definition
70ms - Module::from_file
132ms - Module::diagnostics
78ms - Function::diagnostics
0ms - body_with_source_map_query (1 calls)
2ms - trait_solve_query (1 calls)
76ms - ???
15ms - Function::diagnostics
0ms - body_with_source_map_query (1 calls)
15ms - trait_solve_query (5 calls)
38ms - Function::diagnostics (51 calls)
8ms - parse_query (1 calls)
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Co-authored-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 11:57:11 +00:00
Michal Terepeta
100c2d0127
Add profile
calls to {Module,Function}::diagnostics
...
With this change the output `ra_prof` gives a better indication where
the time is spent. Example output:
```
213ms - publish_diagnostics
213ms - diagnostics
70ms - Module::from_definition
70ms - Module::from_file
132ms - Module::diagnostics
78ms - Function::diagnostics
0ms - body_with_source_map_query (1 calls)
2ms - trait_solve_query (1 calls)
76ms - ???
15ms - Function::diagnostics
0ms - body_with_source_map_query (1 calls)
15ms - trait_solve_query (5 calls)
38ms - Function::diagnostics (51 calls)
8ms - parse_query (1 calls)
```
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 12:50:35 +01:00
Michal Terepeta
84e2e173ee
Remove a duplicate line in collect_defs
...
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-03 12:40:50 +01:00
Michal Terepeta
bc91120b7c
Improve profiling output when duration filter is specified
...
In particular:
- Use strict inequality for comparisons, since that's what the filter
syntax supports.
- Convert to millis for comparisons, since that's the unit used both
for the filter and when printing.
Now something like `RA_PROFILE='*>0'` will only print things that took
at least 1ms (when rounded to millis).
Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
2020-01-02 17:26:02 +01:00
Jeremy Kolb
35d72e40e2
Update dependencies
2020-01-01 17:51:48 -05:00
Emil Lauridsen
167cbb7c4d
Disable cargo_watch snapshot tests on windows
2020-01-01 23:21:35 +01:00
Aleksey Kladov
c3a86325da
Merge pull request #2672 from Speedy37/master
...
fix #2520 : change expand_repeat loop stop condition
2019-12-31 20:57:26 +01:00
Aleksey Kladov
26bd7a896b
Drop support for legacy colorization
2019-12-31 14:11:25 +01:00
Aleksey Kladov
23bac12062
Retry inlay hints on content modified error
2019-12-30 22:20:04 +01:00
Vincent Rouillé
dc98930965
Add details about test_repeat_bad_var current state
2019-12-30 17:12:20 +01:00
Vincent Rouillé
c670a15345
Details about macro NestingState hit and at_end fields
2019-12-30 17:09:07 +01:00
bors[bot]
be37c3369b
Merge #2681
...
2681: cargo-watcher: Resolve macro call site in more cases r=matklad a=kiljacken
This resolves the actual macro call site in a few more cases, f.x. when a macro invokes `compile_error!` (I'm looking at you `ra_hir_def::path::__path`).
Co-authored-by: Emil Lauridsen <mine809@gmail.com>
2019-12-29 21:40:42 +00:00
Emil Lauridsen
bca8524fa2
Add related information with original error site
2019-12-29 20:10:20 +01:00
Emil Lauridsen
96156b95b5
Resolve macro call site in more cases
2019-12-29 19:14:18 +01:00
bors[bot]
fc77921acc
Merge #2680
...
2680: Fix cargo-watcher file urls on windows r=matklad a=kiljacken
Fixes #2676
Co-authored-by: Emil Lauridsen <mine809@gmail.com>
2019-12-29 17:53:13 +00:00
Emil Lauridsen
0d69d23d2f
Lowercase drive letters when getting paths from cargo check
2019-12-29 18:27:14 +01:00
Emil Lauridsen
8280795a85
Remove unused hard-coded paths
2019-12-29 17:39:44 +01:00
Emil Lauridsen
8fad8e897a
Resolve traits in infer using lang item infrastructure
2019-12-29 17:39:31 +01:00
Emil Lauridsen
fc3ab03af7
Add helpers for unpacking lang items
2019-12-29 17:38:37 +01:00
bors[bot]
523b4cbc60
Merge #2650
...
2650: Add macro call support for SourceAnalyzer::type_of r=matklad a=edwin0cheng
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-29 15:02:27 +00:00
bors[bot]
ada9e16537
Merge #2674
...
2674: Reduce visibility r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-29 14:08:37 +00:00
Aleksey Kladov
e1d040a6a4
Reduce visibility
2019-12-29 15:07:53 +01:00
Aleksey Kladov
8f36f768e1
Don't add non-impl/trait containers to scope
2019-12-29 14:47:47 +01:00
bors[bot]
dc48f89581
Merge #2668
...
2668: In-server cargo check watching r=matklad a=kiljacken
Opening a draft now so people can follow the progress, and comment if they spot something stupid.
Things that need doing:
- [x] Running cargo check on save
- [x] Pipe through configuration options from client
- [x] Tests for parsing behavior
- [x] Remove existing cargo watch support from VSCode extension
- [x] Progress notification in VSCode extension using LSP 3.15 `$/progress` notification
- [ ] ~~Rework ra-ide diagnostics to support secondary messages~~
- [ ] ~~Make cargo-check watcher use ra-ide diagnostics~~
~~I'd love some input on whether to try to keep the status bar progress thingy for VSCode? It will require some plumbing, and maintaining yet another rust-analyzer specific LSP notification, which I'm not sure we want to.~~
Fixes #1894
Co-authored-by: Emil Lauridsen <mine809@gmail.com>
2019-12-29 12:57:24 +00:00
bors[bot]
cdcb3d3833
Merge #2667
...
2667: Visibility r=matklad a=flodiebold
This adds the infrastructure for handling visibility (for fields and methods, not in name resolution) in the HIR and code model, and as a first application hides struct fields from completions if they're not visible from the current module. (We might want to relax this again later, but I think it's ok for now?)
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-29 12:24:19 +00:00
Vincent Rouillé
6d84dee4e7
fix #2520 : change expand_repeat loop stop condition
2019-12-28 22:48:49 +01:00
Emil Lauridsen
899dbebd02
Fix busy-waiting issue in main cargo watch thread
2019-12-27 17:29:02 +01:00
Emil Lauridsen
c732f215cb
Don't finish main cargo watch thread when subprocess finishes.
2019-12-27 12:43:14 +01:00
Emil Lauridsen
ed84c85aef
Fix shutdown behavoir of main cargo-watch thread.
...
Even though this didn't error, it became clear to me that it was closing
the wrong channel, resulting in the child thread never finishing.
2019-12-27 12:42:18 +01:00
Emil Lauridsen
59837c75f4
Add doc comment to module
2019-12-27 11:57:00 +01:00
Emil Lauridsen
4d33835a34
Cargo fmt run
2019-12-27 11:47:09 +01:00
Emil Lauridsen
02ce5bbf6b
Shutdown/cancelation story for main cargo watch thread
2019-12-27 11:43:05 +01:00
Emil Lauridsen
a2d10694cc
Consistent, hopefully robust, shutdown/cancelation story for cargo check subprocess
2019-12-27 11:32:05 +01:00
Florian Diebold
9fd2c813ca
visible_from -> is_visible_from
2019-12-27 11:25:04 +01:00
bors[bot]
823e9193fe
Merge #2657
...
2657: Omit closure parameters in closure type display strings r=flodiebold a=SomeoneToIgnore
Part of https://github.com/rust-analyzer/rust-analyzer/issues/1946
I wonder, should we display the the closure trait (Fn/FnMut/FnOnce) in inlay hints instead of `|...|` at all?
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2019-12-27 10:10:07 +00:00
Emil Lauridsen
428a6ff5b8
Move cargo watch functionality to separate crate
2019-12-27 11:10:07 +01:00
Florian Diebold
dfe95d735b
Remove Arc from RawVisibility
...
Now that it's not used as a direct query return value anymore, it doesn't need
to be cheaply cloneable anymore.
2019-12-26 16:42:57 +01:00
Florian Diebold
04cf98f8a6
Fix cross-crate glob privacy handling
2019-12-26 16:31:38 +01:00
Florian Diebold
78111620a3
Remove visibility query, instead add struct field visibility to data
...
Methods should be handled the same, and for items the visibility will be in the
def map.
2019-12-26 16:23:40 +01:00
Florian Diebold
50ebff257d
Rename ResolvedVisibility -> Visibility
2019-12-26 16:23:40 +01:00
Florian Diebold
e1a2961273
Rename Visibility -> RawVisibility
2019-12-26 16:23:40 +01:00
Florian Diebold
04e8eaa14b
Handle privacy for modules
2019-12-26 16:23:40 +01:00
Florian Diebold
21359c3ab5
Take visibility into account for glob imports
2019-12-26 16:23:40 +01:00
Florian Diebold
8ac25f119e
Keep track of visibility during def collection
2019-12-26 16:23:40 +01:00
Florian Diebold
79c90b5641
Collect visibility of items during nameres
2019-12-26 16:23:40 +01:00
Florian Diebold
c31dae2aca
Add doc comment
2019-12-26 16:23:40 +01:00
Florian Diebold
8aeaf93b9a
Make enum variant fields public
2019-12-26 16:23:40 +01:00
Florian Diebold
9e9c4be48a
Hide completions for private struct fields
2019-12-26 16:23:40 +01:00
Florian Diebold
ca15cf422c
Add visibility in code model for fields
2019-12-26 16:23:40 +01:00
Florian Diebold
1ce809d0fa
Add logic for resolving and checking visibility
2019-12-26 16:23:40 +01:00
Florian Diebold
069bf55cca
Add infrastructure for visibility on syntax and hir_def level
2019-12-26 16:23:40 +01:00
bors[bot]
97f01396ed
Merge #2658
...
2658: Only add features flags if non-empty r=matklad a=edwin0cheng
This prevent error when disabled `all-features` in a cargo workspace, because of `--features is not allowed in the root of a virtual workspace` when running `cargo metadata`.
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-25 20:26:08 +00:00
bors[bot]
24e552fadf
Merge #2663
...
2663: Fill in type params in 'add missing impl members' assist r=flodiebold a=flodiebold
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-25 19:26:18 +00:00
Emil Lauridsen
0cdbd08149
Keep VSCode config mostly backwards compatible
2019-12-25 20:26:06 +01:00
Emil Lauridsen
71d2d81dcc
Some documentatioN
2019-12-25 19:56:07 +01:00
Emil Lauridsen
069c165536
Actually respect disabling cargo check functionality
2019-12-25 19:17:54 +01:00
Emil Lauridsen
f7d04d0575
Re-format ra_lsp_server changes
2019-12-25 19:14:30 +01:00
Emil Lauridsen
178c23f505
Re-implement status display using LSP 3.15 progress event
2019-12-25 19:08:44 +01:00
Emil Lauridsen
c21fbc3e87
Migrate tests from extension to rust
2019-12-25 17:37:40 +01:00
Emil Lauridsen
17360b5d14
Fix use of wrong message in diagnostic
2019-12-25 17:37:40 +01:00
Emil Lauridsen
6af4bf7a8d
Configuration plumbing for cargo watcher
2019-12-25 17:37:40 +01:00
Emil Lauridsen
66e8ef53a0
Initial implementation of cargo check watching
2019-12-25 17:37:40 +01:00
Florian Diebold
c39352fa43
Fill in type params in 'add missing impl members' assist
2019-12-24 17:29:27 +01:00
bors[bot]
3f7e5cde0b
Merge #2661
...
2661: Implement infer await from async function r=flodiebold a=edwin0cheng
This PR is my attempt for trying to add support for infer `.await` expression from an `async` function, by desugaring its return type to `Impl Future<Output=RetType>`.
Note that I don't know it is supposed to desugaring it in that phase, if it is not suitable in current design, just feel free to reject it :)
r=@flodiebold
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-24 16:28:46 +00:00
Edwin Cheng
208ad97fdc
Remove AsyncOwner
2019-12-25 00:25:18 +08:00
Edwin Cheng
42813126d9
Check if parameters is empty
2019-12-25 00:12:29 +08:00
Edwin Cheng
3a2cf708ed
Add FIXME
2019-12-24 23:39:17 +08:00
Edwin Cheng
d0537cda9e
Formatting
2019-12-24 20:30:39 +08:00
Edwin Cheng
0edb5b4a50
Implement infer await from async func
2019-12-24 19:45:28 +08:00
Kirill Bulatov
242be3631e
Omit closure parameters
2019-12-23 18:30:25 +02:00
Edwin Cheng
4ee3c5202e
Only add features flags if non-empty
2019-12-24 00:27:48 +08:00
Jeremy Kolb
019fab2261
lsp-types 0.67
2019-12-23 09:33:49 -05:00
Edwin Cheng
12cc2ed557
Use pre-stored macro file
2019-12-23 21:56:10 +08:00
bors[bot]
ce07a2daa9
Merge #2636
...
2636: Chalk update and refactoring r=flodiebold a=flodiebold
This updates the Chalk integration to https://github.com/rust-lang/chalk/pull/311 , which will presumably get merged soon, and refactors it some more, most notably introducing our own `TypeFamily` instead of reusing `ChalkIr`. It's still mostly the same as `ChalkIr` though, except for using Salsa `InternId`s directly.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-23 10:58:06 +00:00
John-John Tedro
700e74df4a
Bump lsp-types to 0.66.0 ( fixes #2651 )
2019-12-23 11:03:41 +01:00
Edwin Cheng
16156d766d
Add macro call support for type_of
2019-12-23 13:19:01 +08:00
Florian Diebold
1f7f4578f7
Filter out error predicates in type bounds as well
2019-12-23 00:08:03 +01:00
Florian Diebold
4053fcfca0
Introduce our own Chalk TypeFamily, instead of using ChalkIr
...
It's not very different, except we can directly use Salsa IDs instead of casting
them. This means we need to refactor the handling of errors to get rid of
UNKNOWN_TRAIT though.
2019-12-23 00:08:03 +01:00
Florian Diebold
6b5efe5bda
Refactor Chalk integration some more
2019-12-23 00:08:03 +01:00
Florian Diebold
67a2555f6d
Update Chalk, clean up Chalk integration a bit
2019-12-23 00:08:03 +01:00
Aleksey Kladov
e424545c0f
Rudimentary name resolution for local items
2019-12-22 22:41:21 +01:00
Aleksey Kladov
7c405c0156
Simplify
2019-12-22 19:32:35 +01:00
Aleksey Kladov
007032f850
Refactor
2019-12-22 19:31:01 +01:00
Aleksey Kladov
baee746185
Share impl Scope between modules and blocks
2019-12-22 15:52:35 +01:00
Aleksey Kladov
6c3ddcfa50
Simplify
2019-12-22 15:37:53 +01:00
Aleksey Kladov
e8da7d4061
Remove unused parameters
2019-12-22 15:31:30 +01:00
Aleksey Kladov
558956c84b
Remove import field
2019-12-22 15:28:55 +01:00
Aleksey Kladov
2c60f42825
Separate defs from imports
2019-12-22 15:21:48 +01:00
Aleksey Kladov
e69af85962
Refactor PerNs construction
2019-12-22 15:10:19 +01:00
Aleksey Kladov
fe38fffaa9
Minor rename
2019-12-22 15:04:31 +01:00
Aleksey Kladov
08df355375
More compact profiling display
2019-12-22 14:17:31 +01:00
Aleksey Kladov
6acef5a7c0
Don't fire no-op changes after files are saved to disk
2019-12-22 13:56:19 +01:00
bors[bot]
436df298ba
Merge #2642
...
2642: Use name instead of ident in parser for macro 2.0 syntax r=matklad a=edwin0cheng
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-22 08:05:02 +00:00
bors[bot]
d33493d779
Merge #2641
...
2641: Parse const generics r=matklad a=roblabla
Adds very primitive support for parsing const generics (`const IDENT: TY`) so that rust-analyzer stops complaining about the syntax being invalid.
Fixes #1574
Fixes #2281
Co-authored-by: roblabla <unfiltered@roblab.la>
2019-12-22 07:56:33 +00:00
Edwin Cheng
737045c1ea
Use name instead of ident for macro 2.0 sytnax
2019-12-22 11:11:10 +08:00
roblabla
b04d4a88d1
Parse const generics
...
Fixes #1574
Fixes #2281
2019-12-22 01:32:08 +00:00
Jeremy Kolb
4ef5cd9a89
Add some module docs
2019-12-21 15:27:38 -05:00
Aleksey Kladov
e903f58d29
More profiling
2019-12-21 19:44:08 +01:00
bors[bot]
f874d6c475
Merge #2637
...
2637: Optimize and profile r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-21 17:46:52 +00:00
Aleksey Kladov
d4b135f38c
Optimize and profile
2019-12-21 18:46:21 +01:00
Aleksey Kladov
1a8f2aa024
Move LocalImportId
2019-12-21 17:34:28 +01:00
Aleksey Kladov
02f79e37ca
Remove import source map
2019-12-21 17:26:28 +01:00
Aleksey Kladov
ec56f59ac1
Remove import from resolution
2019-12-21 17:26:28 +01:00
Aleksey Kladov
4e0168ec14
Remove imports from hir
2019-12-21 15:18:14 +01:00
Aleksey Kladov
973b5cf7e2
Revert "Merge #2629 "
...
This reverts commit cdc9d682b0
, reversing
changes made to 90ef070db3
.
2019-12-21 15:04:33 +01:00
Florian Diebold
2058f704cb
Add dummy implementations of env! and option_env! builtins
...
They don't do anything except return the correct type.
Also refactor the builtin macro tests a bit.
2019-12-21 13:34:43 +01:00
bors[bot]
cdc9d682b0
Merge #2629
...
2629: Remove imports from hir r=matklad a=matklad
We only used them to avoid self-confirming completions (`use self::foo`), but that can be handled more locally.
bors r+
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-21 11:48:12 +00:00
Aleksey Kladov
2d3fdf3fb5
Privatize LocalImportID
2019-12-21 12:47:34 +01:00
Aleksey Kladov
d335311893
Remove import source map
2019-12-21 12:45:33 +01:00
Aleksey Kladov
ab7a70fb14
Don't track imports
2019-12-21 12:38:40 +01:00
Aleksey Kladov
67ba9072fa
Remove hir for imports
2019-12-21 12:18:20 +01:00
bors[bot]
90ef070db3
Merge #2628
...
2628: Add macro 2.0 support in parser r=matklad a=edwin0cheng
This PR added a new syntax kind : `MACRO_DEF` and a keyword `MACRO_KW`
there are two syntax for declarative macro 2.0 :
1. Normal : `macro m { ($i:ident) => {} }` , which handle similar to legacy one.
2. Call like: `macro m($i:ident) {}`, it produces a single token tree which have two child token trees : `($i:ident)` and `{}`
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-21 10:47:47 +00:00
Edwin Cheng
4195c0e5f9
Add macro keyword to ITEM_RECOVERY_SET
2019-12-21 18:42:17 +08:00
Edwin Cheng
bea8f58118
Add macro 2.0 support in parser
2019-12-21 18:29:14 +08:00
bors[bot]
3ebf15c9b2
Merge #2626
...
2626: Recursive collect macros in impl items r=matklad a=edwin0cheng
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-21 10:12:18 +00:00
bors[bot]
b902d4403a
Merge #2627
...
2627: Use SelectionRange from LSP 3.15 r=matklad a=kjeremy
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-12-21 10:01:42 +00:00
bors[bot]
1cbef27ff8
Merge #2625
...
2625: Clippy lints r=matklad a=kjeremy
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-12-21 06:12:36 +00:00
Jeremy Kolb
429199d481
Use SelectionRange from LSP 3.15
2019-12-20 18:57:31 -05:00
Edwin Cheng
c1166697a7
Add a limit for protect against infinite recursion
2019-12-21 05:16:29 +08:00
Edwin Cheng
360de5ba71
Recursive collect macros in impl items
2019-12-21 05:02:31 +08:00
kjeremy
0d5d63a80e
Clippy lints
2019-12-20 15:14:30 -05:00
bors[bot]
6eab968c60
Merge #2624
...
2624: Separate module item from module scope r=matklad a=matklad
bors r+
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-20 19:51:03 +00:00
bors[bot]
f578cd2182
Merge #2623
...
2623: Add support macros in impl blocks r=matklad a=edwin0cheng
This PR add support for macros in impl blocks, which reuse `Expander` for macro expansion.
see also: #2459
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-20 19:42:46 +00:00
Edwin Cheng
ad81d1dbc1
Add support macros in impl blocks
2019-12-21 03:37:03 +08:00
Aleksey Kladov
f5947be0ea
Simplify
2019-12-20 20:15:54 +01:00
bors[bot]
02f9e04ee9
Merge #2617
...
2617: Remove index resolving from hover r=matklad a=kjeremy
I have left in `HoverResult`'s support for multiple entries because we may still want that at some point.
Per https://github.com/rust-analyzer/rust-analyzer/issues/2542#issuecomment-565238142
Co-authored-by: kjeremy <kjeremy@gmail.com>
2019-12-20 18:16:16 +00:00
Florian Diebold
44b00aed4a
Coerce closures to fn pointers
...
E.g. `let x: fn(A) -> B = |x| { y };`
2019-12-20 18:54:33 +01:00
Florian Diebold
9c3f00a906
Fix coercion of last expression in function body
2019-12-20 18:28:21 +01:00
Florian Diebold
2a8c9100bf
Handle closure return types
...
Fixes #2547 .
2019-12-20 18:16:11 +01:00
kjeremy
77626d7bda
Remove unused imports
2019-12-20 11:18:24 -05:00
kjeremy
428358925c
Remove the index resolution from hover
...
We are reasonably precise now to do this.
2019-12-20 11:16:47 -05:00
Aleksey Kladov
7a862f0d47
Make legacy macros private
2019-12-20 17:12:20 +01:00
Aleksey Kladov
af42cb5981
Privitize impls
2019-12-20 16:55:38 +01:00
Aleksey Kladov
7adb53319d
Make items private
2019-12-20 16:52:02 +01:00
Aleksey Kladov
e6b1194f2f
Move some code to scope
2019-12-20 16:52:02 +01:00
Aleksey Kladov
4f9e3f3632
Fix typos
2019-12-20 16:52:02 +01:00
Aleksey Kladov
1b8ce5b37b
Move impls to ItemScope
2019-12-20 16:52:02 +01:00
Aleksey Kladov
030e540ad1
Reduce visibility
2019-12-20 16:52:02 +01:00
Aleksey Kladov
2ce1aa32c4
Rename ModuleScope -> ItemScope
2019-12-20 16:52:02 +01:00
Aleksey Kladov
16ac792f48
Docs
2019-12-20 16:52:02 +01:00