Aleksey Kladov
174c439c56
minor: drop dead code
2022-01-02 19:03:38 +03:00
Aleksey Kladov
2e34a5e2e9
add empty input tests
2022-01-02 18:50:32 +03:00
Aleksey Kladov
c72908a201
more intuitive order
2022-01-02 18:46:01 +03:00
Aleksey Kladov
d846afdeef
check top level entry point invariants
2022-01-02 18:41:32 +03:00
Aleksey Kladov
fa049d94d1
add top-level tests for expressions
2022-01-02 17:52:05 +03:00
Aleksey Kladov
640cc27ff0
add top level tests for types
2022-01-02 17:45:18 +03:00
Aleksey Kladov
e78424846e
enforce parsing invariant for patterns
2022-01-02 17:32:15 +03:00
Aleksey Kladov
7989d567e2
internal: more macro tests
2022-01-02 17:18:21 +03:00
Aleksey Kladov
7de4b964a9
add test for macro items
2022-01-02 16:48:10 +03:00
Aleksey Kladov
bebfb83fd0
split prefix/top tests
2022-01-02 15:18:34 +03:00
Aleksey Kladov
2bd7c74706
add tests for macro statements
2022-01-02 15:17:32 +03:00
Aleksey Kladov
f2ea7853ee
start top-level entry point tests
2022-01-02 15:15:04 +03:00
Aleksey Kladov
e366b3c730
minor: generalize
2022-01-02 15:01:20 +03:00
Lukas Wirth
8fad24d3c2
minor: Simplify
2022-01-02 12:40:46 +01:00
Laurențiu Nicola
53ddf48df4
Avoid collect_vec from itertools
2022-01-02 12:06:14 +02:00
Laurențiu Nicola
fdf1136e79
Replace folds with for loops
2022-01-02 12:05:35 +02:00
Lukas Wirth
65a1538dd1
internal: Use basic NonEmptyVec in mbe::syntax_bridge
2022-01-02 03:48:19 +01:00
Lukas Wirth
a0e0e4575b
Simplify
2022-01-02 02:39:14 +01:00
Lukas Wirth
809461cc42
fix: Enable completions for <_>::$0
2022-01-01 22:20:03 +01:00
Lukas Wirth
44d61766b5
internal: Record unresolved derive invocations in hir
2022-01-01 20:43:25 +01:00
bors[bot]
0e5d8883cc
Merge #11153
...
11153: internal: add more prefix entry point tests r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2022-01-01 17:04:29 +00:00
Aleksey Kladov
e36f557e4d
internal: add more prefix entry point tests
2022-01-01 20:04:09 +03:00
bors[bot]
3f2edc72cd
Merge #11136
...
11136: Turbo fish assist supports multiple type arguments r=matklad a=Vannevelj
This fixes #11135 (changelog: bug).
I've only started using Rust a few days ago but saw this issue on the top of the list when I looked at this repo. I based myself on [this blog post](https://techblog.tonsser.com/posts/what-is-rusts-turbofish ) to understand what a "turbo fish" is so let me know if I missed anything.
Co-authored-by: Jeroen Vannevel <jer_vannevel@outlook.com>
2022-01-01 16:42:22 +00:00
bors[bot]
9c210a49b6
Merge #11151
...
11151: feat: correctly fallback to notify if the clinet-side file watching is not supported r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2022-01-01 16:17:39 +00:00
Aleksey Kladov
a1c33c2e1a
test: force client-side watching
...
The direct reason for this is to fix CI on windows, which seems to fail
for some reason after we fixed the watcher-selection logic which (I
think) changed the tests behavior to use notify rather than client.
But this patch seems to make sense in general -- file watching is
notoriously finicky, so controlling it explicitly leads to less fragile
tests.
2022-01-01 19:16:25 +03:00
Aleksey Kladov
7c4276b3e1
add path tests
2022-01-01 19:02:47 +03:00
Aleksey Kladov
287e748aa9
add expr tests
2022-01-01 18:58:30 +03:00
Aleksey Kladov
58fa7ce782
tests for ty
2022-01-01 18:58:30 +03:00
Aleksey Kladov
5ca83a5fb3
internal: add tests for patterns
2022-01-01 18:58:30 +03:00
Aleksey Kladov
0d1e23e968
better error message
2022-01-01 18:55:53 +03:00
Aleksey Kladov
b9417f3483
feat: correctly fallback to notify if the clinet-side file watching is not supported
2022-01-01 17:26:54 +03:00
Benjamin Coenen
df6fa50f92
feat(diagnostics): add new config to fill default expression
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2021-12-31 16:29:08 +01:00
Benjamin Coenen
0435463439
feat(diagnostics): use Default::default() expression instead of todo! when missing fields
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2021-12-30 15:49:31 +01:00
bors[bot]
22ccb1a104
Merge #11141
...
11141: internal: add tests for extra parser entry points r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-12-30 10:30:28 +00:00
Ariel Davis
d4262f4af8
Migrate to SyntaxNodePtr in new rowan
2021-12-29 23:48:53 -08:00
Aleksey Kladov
2f3237912d
restore invariatns
2021-12-29 20:37:08 +03:00
Aleksey Kladov
b5369927d7
parse empty statemet as statemetn
2021-12-29 20:04:36 +03:00
Aleksey Kladov
841cd30b45
Add test
2021-12-29 19:37:35 +03:00
Aleksey Kladov
f5cfc0504e
rename
2021-12-29 19:18:34 +03:00
Aleksey Kladov
8234a85d15
compress
2021-12-29 18:51:05 +03:00
Aleksey Kladov
ad4b02ecc0
add automated semicolon insertion test
2021-12-29 18:37:06 +03:00
Aleksey Kladov
3f5fc05d66
internal: add tests for extra parser entry points
2021-12-29 18:28:11 +03:00
Jeroen Vannevel
b04c4e76df
formatting
2021-12-28 18:52:12 +00:00
Jeroen Vannevel
e299fd5475
turbo fish supports multiple type arguments
2021-12-28 18:41:34 +00:00
Aleksey Kladov
ea96c376c8
compress
2021-12-28 19:17:34 +03:00
Aleksey Kladov
660cf34d8c
dead code
2021-12-28 19:13:30 +03:00
Aleksey Kladov
bfc263f1f9
introduce hacks module
2021-12-28 18:57:13 +03:00
Aleksey Kladov
aa1788dc71
clarify semantics of doc links
2021-12-28 17:00:55 +03:00
Aleksey Kladov
f9e06e6524
last use of parse api in ssr
2021-12-28 17:00:55 +03:00
Aleksey Kladov
45bba40079
dead code
2021-12-28 17:00:55 +03:00
Aleksey Kladov
55f1564101
remove fragments from syntax
2021-12-28 17:00:55 +03:00
Aleksey Kladov
dacbc6a69a
move the rest of ssr parsing to fragments
2021-12-28 17:00:55 +03:00
Aleksey Kladov
7e9c74d20b
drop dead code
2021-12-28 17:00:55 +03:00
Aleksey Kladov
2cbfcf431e
add ssr fragment for statements
2021-12-28 17:00:55 +03:00
Aleksey Kladov
df2a996cb0
add ssr fragment for expressions
2021-12-28 17:00:55 +03:00
Aleksey Kladov
2d373dc53c
verify during parse
2021-12-28 17:00:55 +03:00
Aleksey Kladov
b8b9655236
add test
2021-12-28 17:00:55 +03:00
Aleksey Kladov
f0fefde401
remove Item::parse
2021-12-28 17:00:55 +03:00
Aleksey Kladov
b468bd6645
internal: start isolating ssr-related parsing APIs to SSR
2021-12-28 17:00:55 +03:00
Aleksey Kladov
634c7682c9
add missing test
2021-12-28 17:00:55 +03:00
Aleksey Kladov
8794892432
dead code
2021-12-28 17:00:55 +03:00
Aleksey Kladov
afffa096f6
add TopEntryPoint
2021-12-28 17:00:55 +03:00
Aleksey Kladov
8e7fc7be65
simplify
2021-12-28 17:00:55 +03:00
Aleksey Kladov
369001615f
move path
2021-12-28 17:00:55 +03:00
Aleksey Kladov
c5d8a9b341
move expr
2021-12-28 17:00:55 +03:00
Aleksey Kladov
04ae18de29
move ty
2021-12-28 17:00:55 +03:00
Aleksey Kladov
5636bef2ec
move pat to prefix entry points
2021-12-28 17:00:55 +03:00
Aleksey Kladov
f10f51833c
move stmt to entry points
2021-12-28 17:00:55 +03:00
Aleksey Kladov
519ee21bcb
internal: move block to prefix entry point
2021-12-28 17:00:55 +03:00
Aleksey Kladov
350d5dc152
internal: move visibility to a prefix entry point
2021-12-28 17:00:55 +03:00
Aleksey Kladov
abc658aad0
internal: add prefix entry points
2021-12-28 17:00:55 +03:00
Aleksey Kladov
d3ba55bd06
cleanup imports
2021-12-28 17:00:55 +03:00
Aleksey Kladov
23ce31e836
simplify
2021-12-28 17:00:55 +03:00
bors[bot]
4d3ad04a9c
Merge #11131
...
11131: internal: avoid speculation when completing macros r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-12-28 13:52:52 +00:00
Aleksey Kladov
177a183e85
minor: simplify
2021-12-28 16:52:15 +03:00
Aleksey Kladov
56b51852c2
minor: dedup
2021-12-28 16:52:15 +03:00
Aleksey Kladov
726da9884b
avoid speculation when completing macros
2021-12-28 16:52:15 +03:00
Aleksey Kladov
621ba1c2d3
import style
2021-12-28 13:52:40 +03:00
Aleksey Kladov
42ff46c1e8
minor
2021-12-27 21:45:42 +03:00
Aleksey Kladov
8e9734e18f
fix line endings
2021-12-26 18:46:21 +03:00
Aleksey Kladov
b360ea91f2
internal: move inline parser tests to parser crate
2021-12-26 18:19:09 +03:00
Aleksey Kladov
0f74758fea
internal: move outlined parser tests
2021-12-26 17:58:33 +03:00
Aleksey Kladov
f4cb0ff9be
internal: move ws attachment logic to the parser crate
...
This has to re-introduce the `sink` pattern, because doing this purely
with iterators is awkward :( Maaaybe the event vector was a false start?
But, anyway, I like the current factoring more -- it sort-of obvious
that we do want to keep ws-attachment business in the parser, and that
we also don't want that to depend on the particular tree structure. I
think `shortcuts` module achieves that.
2021-12-26 16:47:10 +03:00
Aleksey Kladov
f692fafee8
rename
2021-12-25 22:03:57 +03:00
Aleksey Kladov
74de79b1da
internal: rename
2021-12-25 22:02:26 +03:00
Aleksey Kladov
d0d05075ed
internal: replace TreeSink with a data structure
...
The general theme of this is to make parser a better independent
library.
The specific thing we do here is replacing callback based TreeSink with
a data structure. That is, rather than calling user-provided tree
construction methods, the parser now spits out a very bare-bones tree,
effectively a log of a DFS traversal.
This makes the parser usable without any *specifc* tree sink, and allows
us to, eg, move tests into this crate.
Now, it's also true that this is a distinction without a difference, as
the old and the new interface are equivalent in expressiveness. Still,
this new thing seems somewhat simpler. But yeah, I admit I don't have a
suuper strong motivation here, just a hunch that this is better.
2021-12-25 22:02:26 +03:00
rainy-me
d77d3234ce
refactor: avoid filter map next with find map separate traversal
2021-12-25 09:08:13 +09:00
hkalbasi
e6139cf47b
show values of constants in hover
2021-12-23 17:53:46 +03:30
Heinenen
05abfc77f5
hide type inlay hints
2021-12-23 12:56:38 +01:00
Heinenen
d7dfe93fc3
hide type inlay hints for enum variant constructors and tuple struct constructors
2021-12-23 12:56:38 +01:00
Petr Nevyhoštěný
d9b3242bcd
Fix generic type substitution in impl trait with assoc type
2021-12-23 10:16:24 +01:00
Wang Ruochen
be5205170c
Update comment
2021-12-22 14:17:43 -08:00
Wang Ruochen
44edf63edd
Add pattern when there's no else branch
2021-12-22 10:18:37 -08:00
bors[bot]
578269e613
Merge #11093
...
11093: fix: Do not complete `Drop::drop`, complete `std::mem::drop` instead r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/5005
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-22 01:48:31 +00:00
Lukas Wirth
85ed5a3182
Make hover test not relient on minicore structure
2021-12-22 02:36:31 +01:00
Lukas Wirth
5360c9bd22
fix: Do not complete Drop::drop
, complete std::mem::drop
instead
2021-12-22 02:25:38 +01:00
Wang Ruochen
2bd2960fda
Don't support if-let branches
2021-12-21 16:51:26 -08:00
Wang Ruochen
d0986cd96b
Move variables into the closure
2021-12-21 16:48:02 -08:00
bors[bot]
d4c5bf7828
Merge #11092
...
11092: internal: Directly use self param in completions instead of searching r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-21 23:20:16 +00:00
Lukas Wirth
276687a6ee
internal: Directly use self param in completions instead of searching
2021-12-22 00:18:39 +01:00
bors[bot]
47fad0ed73
Merge #11071 #11090
...
11071: feat: Build and publish pre-release Code extension versions r=matklad a=lnicola
Closes #11026
11090: internal: Deduplicate lower ctx hygiene field r=Veykril a=Veykril
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-21 17:37:56 +00:00
Lukas Wirth
e76e0e843d
Simplify
2021-12-21 18:28:04 +01:00
Lukas Wirth
0b1c434d53
Deduplicate lower ctx hygiene field
2021-12-21 18:27:54 +01:00
Lukas Wirth
60dfe8ceed
Replace a few String instances with SmolStr in completions
2021-12-21 16:57:16 +01:00
Lukas Wirth
7f7a3644b3
Fully render type alias completions from hir
2021-12-21 16:36:23 +01:00
Lukas Wirth
40d5c58a80
Fully render const item completions from hir
2021-12-21 16:35:51 +01:00
Lukas Wirth
929cae74b1
fmt +stable
2021-12-21 15:48:12 +01:00
Lukas Wirth
95ae67b0b0
Simplify type alias rendering, remove constructor structs
2021-12-21 15:37:43 +01:00
Lukas Wirth
97f7865c56
Simplify macro rendering, remove constructor structs
2021-12-21 15:20:15 +01:00
Lukas Wirth
2b60d80eaf
Simplify const rendering, remove constructor structs
2021-12-21 15:04:19 +01:00
Lukas Wirth
e99ed3e407
Simplify enum variant rendering, remove constructor structs
2021-12-21 15:01:52 +01:00
Lukas Wirth
a720fc8e3a
Simplify function rendering, remove constructor structs
2021-12-21 14:51:06 +01:00
Lukas Wirth
22b2c2fdf7
Simplify
2021-12-21 14:07:48 +01:00
Lukas Wirth
539b0c2582
fix: Fix inline local assist not working in let stmt initializer
2021-12-21 14:03:59 +01:00
Lukas Wirth
8e084132f8
internal: Do less work in hir::Semantics
2021-12-21 13:38:58 +01:00
Laurențiu Nicola
01143c6600
Fix typo in reformat number assist label
2021-12-21 09:45:20 +02:00
bors[bot]
851af5a52b
Merge #11074
...
11074: Bump default CHALK_SOLVER_MAX_SIZE to 150 r=lnicola a=lnicola
Fixes #11072
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-20 18:38:47 +00:00
Laurențiu Nicola
3f3aee53b4
Bump default CHALK_SOLVER_MAX_SIZE to 150
2021-12-20 20:35:45 +02:00
bors[bot]
c5722a66c5
Merge #11073
...
11073: fix: Fix windows not finding the pdb file r=lnicola a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10371
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-20 18:20:08 +00:00
Lukas Wirth
4a5c8c6ad2
fix: Fix windows not finding the pdb file
2021-12-20 19:17:31 +01:00
bors[bot]
d3aa2579cc
Merge #11069
...
11069: fix: Partially fix `ide_db::search` for crate roots r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10007
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-20 16:50:35 +00:00
Lukas Wirth
5206946674
fix: Partially fix ide_db::search
for crate roots
2021-12-20 17:48:47 +01:00
bors[bot]
8dc3a270f6
Merge #11067
...
11067: internal: Store function param names in ItemTree r=Veykril a=Veykril
This prevents us reparsing source files for completions, sometimes slowing them down massively if the source file is not cached at the expense of a slightly bigger memory usage.
related info https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Completion.20performance
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-20 14:43:39 +00:00
Lukas Wirth
8eb7ee9099
Update test output
2021-12-20 15:43:15 +01:00
Lukas Wirth
cd9d76e0ca
internal: Store function param names in ItemTree
2021-12-20 15:24:37 +01:00
bors[bot]
f46731a230
Merge #11028
...
11028: Bump MSRV (1.57) r=Veykril a=iDawer
This bumps MSRV on all crates to 1.57 except `la-arena`
#10986 requires >=1.57
Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2021-12-20 13:45:35 +00:00
Lukas Wirth
f609efff87
Simplify
2021-12-20 14:38:22 +01:00
bors[bot]
14ff3d7e5f
Merge #11065
...
11065: internal: Don't kick off inference in `Semantics::descend_into_macros_impl` r=Veykril a=Veykril
We do not need inference info here so there is no point in calculating it
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-20 12:49:48 +00:00
Lukas Wirth
a574434c3f
Simplify NameClass::classify
2021-12-20 13:47:06 +01:00
Lukas Wirth
37a87708ae
internal: Don't kick off inference in Semantics::descend_into_macros_impl
2021-12-20 13:19:48 +01:00
bors[bot]
48d6cef436
Merge #10484
...
10484: internal: Update match checking algorithm r=lnicola a=iDawer
Sync match checking algorithm with rust-lang/rust f31622a50 2021-11-12 (https://github.com/rust-lang/rust/pull/90813 )
This update brings huge simplification to the match checking and introduces an easy to use machinery for pattern destructuring and also:
1. Add a function to do post-inference normalization `hir_ty::infer::normalize(...)`.
2. Store binding modes in `InferenceResult`.
Todo:
- [x] Rebase & test (https://github.com/rust-analyzer/rust-analyzer/pull/10484#issuecomment-996669665 )
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2021-12-20 12:05:23 +00:00
bors[bot]
2ca3834c9f
Merge #11062
...
11062: fix: Don't say "a reference to" for `Copy` types in the generate getter assist r=Veykril a=patrick-gu
This changes the generate getter assist to not say "a reference to" in the documentation stub if the type is `Copy`, as the getter does not return a reference.
To determine whether the type is `Copy`, I have added an `is_copy` method to `ReferenceConversion`.
Co-authored-by: patrick-gu <55641350+patrick-gu@users.noreply.github.com>
2021-12-20 09:14:38 +00:00
patrick-gu
76b50f14f7
Don't say "a reference to" for Copy types
...
This changes the generate getter assist to not say "a reference to" in the documentation stub if the type is Copy, as the getter does not return a reference.
2021-12-19 17:28:31 -08:00
iDawer
a9ad7be748
Respect binding mode of a binding pattern for exhaustiveness check
2021-12-20 00:14:39 +05:00
iDawer
b17aefb83a
internal: Normalize field type after substituting
2021-12-20 00:14:39 +05:00
iDawer
1280961b51
internal: sync match checking with rust-lang/rust f31622a50 2021-11-12
2021-12-20 00:10:01 +05:00
Dawer
deb05930ef
internal: Sync match checking algorithm with rustc
...
Original version: rust-lang/rust 68b76a483 2021-10-01
2021-12-20 00:10:01 +05:00
Wang Ruochen
71676ae89d
Support "move if to guard" for if else chains
2021-12-19 09:26:52 -08:00
Laurențiu Nicola
c9ca77f641
Bump object
2021-12-19 19:00:42 +02:00
Laurențiu Nicola
32b6f103a6
Bump chalk
2021-12-19 18:58:39 +02:00
ucrhh
b289f13c75
fix unwrap_block by removing double trimming
2021-12-18 23:19:53 +01:00
bors[bot]
81d0096000
Merge #11035
...
11035: Include clippy lint groups in autocomplete r=Veykril a=k-nasa
## Why
close: https://github.com/rust-analyzer/rust-analyzer/issues/11027
## Proof
I confirmed that complement candidates are coming out.
https://user-images.githubusercontent.com/23740172/146465758-bc7d5cdd-e2fb-48d6-abf7-804ba859c9b1.mov
Co-authored-by: k-nasa <htilcs1115@gmail.com>
2021-12-18 17:59:29 +00:00
rainy-me
67cc6c1e16
feat: treat fn keyword inside function pointer type as primitive
2021-12-19 01:51:51 +09:00
Aleksey Kladov
92dad471bc
Update crates/parser/src/lexed_str.rs
...
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2021-12-18 17:34:55 +03:00
Aleksey Kladov
a022ad68c9
internal: move all the lexing to the parser crate
2021-12-18 17:20:38 +03:00
k-nasa
71ac246bd4
refactor: chain iter
2021-12-18 23:19:29 +09:00
Aleksey Kladov
78926027e3
converting lexed str to tokens
2021-12-18 15:36:21 +03:00
Aleksey Kladov
8b9d145dea
soa all the things
2021-12-18 15:31:50 +03:00
Aleksey Kladov
799941e05e
move tests
2021-12-18 14:55:20 +03:00
Aleksey Kladov
7e99864dbf
move lexing to the parser crate
2021-12-18 14:55:20 +03:00
Aleksey Kladov
958f20ff84
minor: dead code
2021-12-18 14:55:20 +03:00
bors[bot]
7f28b49759
Merge #11043
...
11043: fix: fix incorrect mismatched argument count diagnostic with `std::arch` functions r=jonas-schievink a=jonas-schievink
Adds basic support for `#[rustc_legacy_const_generics]`.
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10009
Full support would involve actually checking call arguments against the right expected types.
bors r+
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2021-12-17 17:46:42 +00:00
Jonas Schievink
fcc76e93a0
Initial support for #[rustc_legacy_const_generics]
2021-12-17 18:45:56 +01:00
bors[bot]
6674756c07
Merge #11041
...
11041: minor: Fix some clippy lints r=lnicola a=lnicola
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-17 15:52:53 +00:00
Laurențiu Nicola
6c799dac1e
Fix some clippy lints
2021-12-17 17:46:20 +02:00
bors[bot]
04b0b19cdb
Merge #10527
...
10527: internal: Remove a few snippet completions, replace them with user snippets definitions in VSCode r=Veykril a=Veykril
Closes https://github.com/rust-analyzer/rust-analyzer/issues/9636
cc https://github.com/rust-analyzer/rust-analyzer/issues/7033#issuecomment-939959905
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-17 15:44:48 +00:00
Lukas Wirth
2a88b76041
Update tests
2021-12-17 16:39:21 +01:00
Laurențiu Nicola
8ad7c0439c
Remove needless clones
2021-12-17 17:35:10 +02:00
Laurențiu Nicola
fb9529626d
Spelling nits
2021-12-17 17:26:35 +02:00
Lukas Wirth
9fe0f0d1d9
Add a few default snippets for VSCode
2021-12-17 16:24:29 +01:00
Lukas Wirth
d3e538638a
fix: Don't duplicate attribute completions
2021-12-17 15:22:53 +01:00
k-nasa
0e9095e42c
manual run sourcegen_lint_completions
2021-12-17 08:46:17 +09:00
k-nasa
7643e08962
Add clippy lint group to attribute auto compleme
2021-12-17 08:34:08 +09:00
k-nasa
4e6e65dd71
List struct to clonable
2021-12-17 08:33:46 +09:00
Wang Ruochen
ee079561b1
Add comma for "move if to guard"
2021-12-15 15:26:24 -08:00
bors[bot]
4ec6bd6206
Merge #11017
...
11017: Support "move if to guard" with an else branch r=Veykril a=weirane
Support the assist `move_arm_cond_to_match_guard` when there is an else branch.
I have two questions:
1. How to indent the first line of a match arm? `matcharm.indent()` doesn't seem to work. so I hard coded four spaces here:
95a0de85d5/crates/ide_assists/src/handlers/move_guard.rs (L162-L163)
2. I find a little issue in the original implementation, this code
```rust
let y = match 92 {
x => {
if x == 0 {$0
false
}
}
_ => true,
};
```
will be transformed to
```rust
let y = match 92 {
x if x == 0 => false
_ => true,
};
```
a comma is missing after the `false`. Should I also fix that? Or this can go in a separate PR.
Closes #10997 .
Co-authored-by: Wang Ruochen <wrc@ruo-chen.wang>
2021-12-15 23:04:51 +00:00
Wang Ruochen
e8d0742997
Add coverage marks
2021-12-15 14:44:47 -08:00
iDawer
676744be6e
Bump MSRV (1.57)
2021-12-16 01:56:12 +05:00
Wang Ruochen
95a0de85d5
Support "move if to guard" with an else branch
2021-12-14 10:27:44 -08:00
bors[bot]
9efa355a62
Merge #11011
...
11011: minor: Simplify r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-14 11:56:30 +00:00
Lukas Wirth
901c7c7277
match_ast!
takes a pattern to allow underscore usage
2021-12-14 12:44:31 +01:00
Lukas Wirth
9915103c9e
Simplify
2021-12-14 12:38:20 +01:00
Lukas Wirth
04a7fbbddb
Move out doc-links tests into a separate module
2021-12-14 12:10:43 +01:00
zhoufan
c3ad945d9b
fixes broken tests
2021-12-14 15:57:58 +08:00
zhoufan
7b952cb1aa
infer associated method in local scope
2021-12-14 15:34:57 +08:00
bors[bot]
791722b70a
Merge #10998
...
10998: Add number representation assists r=Veykril a=errx
Reimplemented assists from this PR https://github.com/rust-analyzer/rust-analyzer/pull/3683 with current APIs.
![image](https://user-images.githubusercontent.com/462486/145726792-47700215-26f2-4fdc-9520-63d1487901e5.png )
![image](https://user-images.githubusercontent.com/462486/145726802-f528a2f7-9159-41d3-b459-fc3fae033e60.png )
I've decided not to add options about size of the groups so behaviour is similar to clippy's.
Minimal number length is also taken from clippy.
Co-authored-by: Oleg Matrokhin <matrokhin@gmail.com>
2021-12-13 18:49:06 +00:00
Oleg Matrokhin
60605a24d4
Reuse results from split_into_parts()
2021-12-13 21:16:04 +03:00
Oleg Matrokhin
8b03b41b7a
Add number representation assists
2021-12-13 19:35:38 +03:00
bors[bot]
69500e8c6b
Merge #11002
...
11002: fix: Add support for v6 macro metadata format r=lnicola a=lnicola
CC https://github.com/rust-analyzer/rust-analyzer/issues/10894#issuecomment-991993824
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-13 16:17:14 +00:00
Laurențiu Nicola
e6af1ca718
Add support for v6 macro metadata format
2021-12-13 18:15:22 +02:00
bors[bot]
e1f3982a5f
Merge #11001
...
11001: minor: fixup generate assist priorities r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10996
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-13 15:51:54 +00:00
bors[bot]
3f550d2e38
Merge #11000
...
11000: fix: insert whitespaces into assoc items for assist when macro generated r=Veykril a=Veykril
This is obviously only a temporary hack which still produces ugly looking items, but as long as the syntax is valid one can at least have rustfmt fix the formatting again.
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6588
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-13 15:43:12 +00:00
Lukas Wirth
1cef532c4d
minor: fixup generate assist priorities
2021-12-13 16:42:21 +01:00
Lukas Wirth
749eeef3e7
fix: insert whitespaces into assoc items for assist when macro generated
2021-12-13 16:35:32 +01:00
Lukas Wirth
328419534d
Move ws insert rendering for macro expansion into ide_db
2021-12-13 15:55:13 +01:00
Aleksey Kladov
3b5b988526
prettyfy
2021-12-12 19:36:14 +03:00
Aleksey Kladov
980dd56cdc
consistency
2021-12-12 19:32:04 +03:00
Aleksey Kladov
6e4bb57014
simplify
2021-12-12 19:31:32 +03:00
Aleksey Kladov
57e6ef0bfb
tighten up invariants
2021-12-12 19:22:37 +03:00
Aleksey Kladov
18d4737fb9
add cross-crate inlines
2021-12-12 19:17:04 +03:00
Aleksey Kladov
1055a6111a
port mbe to soa tokens
2021-12-12 19:06:40 +03:00
Aleksey Kladov
965585748e
more orthogonal interface
2021-12-12 18:38:49 +03:00
Aleksey Kladov
6ce587ba5a
parser tests work
2021-12-12 18:31:05 +03:00
Aleksey Kladov
26bfd6023f
Switch parser to use tokens
2021-12-12 16:54:09 +03:00
Aleksey Kladov
d5ad0f3ca0
use eof token pattenr
2021-12-12 16:54:09 +03:00
Aleksey Kladov
addfd8d9e8
start SOA parser interface
2021-12-12 16:54:09 +03:00
bors[bot]
fc628cfc89
Merge #10993
...
10993: minor: Bump deps r=lnicola a=lnicola
Gets `coutme 2.0`.
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-12 11:11:50 +00:00
Laurențiu Nicola
8782e8e704
Bump deps
2021-12-12 13:10:21 +02:00
bors[bot]
40159150aa
Merge #10951
...
10951: feat: assist to generate documentation templates r=Veykril a=numero-744
Closes #10878 , #1915 and #4767
Full description is in #10878 , better read [the tests](https://github.com/rust-analyzer/rust-analyzer/pull/10951/files#diff-7a64e2efb66b2625443340fcbc96d531baff12c17cc0aaf51885ea94f67de254R424 ) to understand what this feature does.
- [x] There is one remaining thing about non-`pub` functions, what do you think about it?
- [x] In this PR [empty examples are generated](https://github.com/rust-analyzer/rust-analyzer/pull/10951/files#diff-7a64e2efb66b2625443340fcbc96d531baff12c17cc0aaf51885ea94f67de254R99 ) for `trait` functions, but maybe no examples should be provided at all.
- [x] If there is already a documentation, add another one with a separator ([currently done](https://github.com/rust-analyzer/rust-analyzer/pull/10951/files#diff-7a64e2efb66b2625443340fcbc96d531baff12c17cc0aaf51885ea94f67de254R74 )) or simply disable this assist?
- [x] I will check once more that the generated examples are correct (ie. they are easy to fill before that they are built and tested)
Comments appreciated 😄
Co-authored-by: Côme ALLART <come.allart@etu.emse.fr>
2021-12-11 22:58:49 +00:00
Côme ALLART
0e89f2f346
feat: remove should_panic example generation
2021-12-11 22:46:54 +01:00
Côme ALLART
9e53db274b
refactor: use hir to test if a value is returned
2021-12-11 20:52:14 +01:00
Côme ALLART
80a68685db
refactor: use Itertools::intersperse
2021-12-11 20:41:23 +01:00
Côme ALLART
7266fdb5a4
refactor: use hir to compare returned and self types
2021-12-11 20:33:08 +01:00
Florian Diebold
d599f819e0
Fix expected type calculation in struct literal if followed by comma
2021-12-11 18:47:45 +01:00
bors[bot]
0eb6039e4e
Merge #10987
...
10987: fix: respect inner attributes for Structs and Enums r=lnicola a=rainy-me
fix : #10980 (the allow/deny issue is not fully resolved though.)
Co-authored-by: rainy-me <github@yue.coffee>
2021-12-11 17:20:14 +00:00
rainy-me
a0c52794bd
fix: lookup upwards for struct and enum
2021-12-12 01:23:27 +09:00
bors[bot]
4f04d8477a
Merge #10965
...
10965: minor: Remove dead assists-related function r=Veykril a=lnicola
Unless I'm missing something, `assists_with_fixes` seems to be always used and ends up in the same code path.
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-11 15:06:52 +00:00
bors[bot]
48cd733c9e
Merge #10956 #10986
...
10956: minor: Bump deps r=Veykril a=lnicola
bors r+
10986: fix: Fix lint completions not working for unclosed attributes r=Veykril a=Veykril
Fixes #10682
Uses keywords and nested `TokenTree`s as a heuristic to figure out when to stop parsing in case the attribute is unclosed which should work pretty well as attributes are usually followed by either of those.
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-11 14:58:07 +00:00
Lukas Wirth
0001a42570
fix: Fix lint completions not working for unclosed attributes
2021-12-11 15:55:25 +01:00
bors[bot]
9946def7e2
Merge #10877
...
10877: feat: make hightlighting linear r=matklad a=matklad
In https://youtu.be/qvIZZf5dmTE , we've noticed that AstIdMap does a
linear lookup when going from SyntaxNode to Id. This leads to
accidentally quadratic overall performance. Replace linear lookup with a
O(1) hashmap lookup.
Future work: don't duplicate `SyntaxNodePtr` in `AstIdMap` and switch to
"call site dependency injection" style storage (eg, store a
`HashSet<ErasedFileAstId>`).
See the explanation of the work here on YouTube :-)
As you can see from then benchmark results, this doesn't actually make analysis stats fastre. I am a bit mystified as to why this is happening to be honest.
Baseline
```
Database loaded: 598.40ms, 304minstr, 118mb (metadata 390.57ms, 21minstr, 841kb; build 111.31ms, 8764kinstr, -214kb)
crates: 39, mods: 824, decls: 18647, fns: 13910
Item Collection: 9.70s, 75ginstr, 377mb
exprs: 382426, ??ty: 387 (0%), ?ty: 285 (0%), !ty: 145
Inference: 43.16s, 342ginstr, 641mb
Total: 52.86s, 417ginstr, 1018mb
```
This PR:
```
Database loaded: 626.34ms, 304minstr, 118mb (metadata 416.26ms, 21minstr, 841kb; build 113.67ms, 8750kinstr, -209kb)
crates: 39, mods: 824, decls: 18647, fns: 13910
Item Collection: 10.16s, 75ginstr, 389mb
exprs: 382426, ??ty: 387 (0%), ?ty: 285 (0%), !ty: 145
Inference: 44.51s, 342ginstr, 644mb
Total: 54.67s, 417ginstr, 1034mb
```
I think we probably should merge the first commit here, but not the second.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-12-11 14:49:29 +00:00
Aleksey Kladov
278e7c3311
more frugal map
2021-12-11 17:49:09 +03:00
bors[bot]
3137327182
Merge #10985
...
10985: minor: Remove unnecessary clones r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-11 14:32:29 +00:00
Lukas Wirth
03f6d92ae4
minor: Remove unnecessary clones
2021-12-11 15:27:36 +01:00
bors[bot]
d97f2f6b9b
Merge #10976
...
10976: fix: Show case-insensitive exact matches instead of fuzzy flyimport for short paths r=Veykril a=Veykril
And raise the fuzzy trigger from 2 to 3 chars. This way we keep the ability of flyimporting short names like `Rc`.
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6917
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-11 13:50:55 +00:00
Lukas Wirth
143a30aa51
Show case-insensitive exact matches instead of fuzzy flyimport for short paths
2021-12-11 14:47:11 +01:00
bors[bot]
d03397fe11
Merge #10978
...
10978: internal: Only prime direct dependencies of the workspace crates r=jonas-schievink a=lnicola
This reduces the number of primed crates on `self` from 177 to 105.
```text
# baseline
86521 me 20 0 2939M 562M 14320 S 0.0 0.9 0:07.10 37 rust-analyzer
# pr
99947 me 20 0 2935M 549M 14424 S 0.0 0.9 0:07.10 37 rust-analyzer
```
The RAM usage seems to vary a lot, so I'm not sure the improvement shown above is real.
We also drop the topological sorting, although it might still make sense to do the dependencies before the workspace crates. But since it's only used to make the progress reporting a bit more fine, it probably doesn't matter too much.
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-12-10 22:31:55 +00:00
Lukas Wirth
1bbc255ec5
Remove some allocations
2021-12-10 20:01:24 +01:00
Lukas Wirth
c81aa68afe
Don't show trait flyimports for impl trait and placeholders
2021-12-10 19:18:21 +01:00
Lukas Wirth
a7fc2061ea
Show enum completions for single variant enums in irrefutable patterns
2021-12-10 18:25:54 +01:00
Côme ALLART
9c0f9d02bf
feat: trait fn: add panicking example only if default panicks
2021-12-10 15:53:43 +01:00
Laurențiu Nicola
d012a20f25
Only prime direct dependencies of the workspace crates
2021-12-10 16:24:07 +02:00
bors[bot]
bc8efca0c8
Merge #10977
...
10977: fix: fix `concat!` with captured expression r=jonas-schievink a=jonas-schievink
Adds another hack on top of https://github.com/rust-analyzer/rust-analyzer/pull/10623 to fix `concat!`.
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10721
bors r+
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2021-12-10 14:19:51 +00:00
Jonas Schievink
95ddeaed8e
Fix concat!
with captured expression
2021-12-10 15:17:31 +01:00
Côme ALLART
f5e0998402
refactor: use hir to check if fn in trait/impl
2021-12-10 15:16:04 +01:00
Côme ALLART
c3d151ada6
fix: check correctly if function is exported
2021-12-10 14:42:31 +01:00
Lukas Wirth
c469f8abcb
internal: Shrink TraitImpls and InherentImpls HashMaps
2021-12-09 18:39:46 +01:00
Lukas Wirth
e1a236d65e
Simplify
2021-12-09 18:28:10 +01:00
Lukas Wirth
f9c59d3752
Use known names instead of string literals
2021-12-09 18:13:15 +01:00
Lukas Wirth
067d87e8a9
Remove some allocs
2021-12-09 18:04:32 +01:00
Jonas Schievink
58ce331baa
Fix library target overriding sysroot deps
2021-12-08 17:05:00 +01:00
Laurențiu Nicola
f5968cfc84
Remove dead assists-related function
2021-12-08 16:55:25 +02:00
Jonas Schievink
c0a30ff21d
Move synstructure hack out of ItemTree lowering
2021-12-08 15:44:52 +01:00
Côme ALLART
dc4e4c7daa
fix: add mod files in path in generated examples
2021-12-07 23:34:53 +01:00
bors[bot]
77f2d34930
Merge #10950
...
10950: internal: completion: split out more PathKinds from ImmediateLocation r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-07 21:57:59 +00:00
Lukas Wirth
ae0c7268f7
internal: completion: split out more PathKinds from ImmediateLocation
2021-12-07 22:49:42 +01:00
Côme ALLART
220137f1cf
fix: disable assist for documented functions
2021-12-07 18:02:18 +01:00
Jonas Schievink
b365b6119c
Treat extern blocks as item containers
2021-12-07 17:31:26 +01:00
bors[bot]
b7afb6fc6c
Merge #10958
...
10958: internal: add "Shuffle Crate Graph" command r=jonas-schievink a=jonas-schievink
May be useful for debugging issues like https://github.com/rust-analyzer/rust-analyzer/issues/10084
bors r+
Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2021-12-07 15:44:05 +00:00
Jonas Schievink
deb5c1426d
internal: add "Shuffle Crate Graph" command
2021-12-07 16:37:19 +01:00
bors[bot]
bf484d9d99
Merge #10957
...
10957: fix: Fix some TryToNav impls not upmapping ranges out of macros r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-07 14:51:07 +00:00
Lukas Wirth
f781e599cc
Adjust incorrect runnable tests
2021-12-07 15:42:54 +01:00
Lukas Wirth
e09d410dcd
Simplify
2021-12-07 15:06:56 +01:00
Lukas Wirth
b66f181bc0
Fix some TryToNav impls not upmapping ranges out of macros
2021-12-07 15:02:22 +01:00
Laurențiu Nicola
9a624abc84
Bump deps
2021-12-07 13:15:14 +02:00
Côme ALLART
3a82548c5e
fix: reduce assist scope: pub fn's in pub modules
2021-12-06 23:33:24 +01:00
Laurențiu Nicola
3678cbd12e
Bump tracing
2021-12-06 20:54:45 +02:00
Côme ALLART
d55d3b63cb
fix: format assist doc for sourcegen_assists_docs
2021-12-06 19:04:44 +01:00
Côme ALLART
998b91af9c
feat: assist to generate documentation templates
2021-12-06 18:32:25 +01:00
Laurențiu Nicola
f5db6e0e95
Bump parser step limit a little
2021-12-06 11:47:36 +02:00
bors[bot]
7d6fcbc0be
Merge #10944
...
10944: internal: Prefer resolution of inert attributes r=Veykril a=Veykril
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10942
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-12-05 15:28:28 +00:00