Jonas Platte
f5b789b1dc
Add failing test case for issue 11100
2022-01-05 18:04:36 +01:00
Jeroen Vannevel
053ae2452c
removed trailing whitespace
2022-01-05 02:16:22 +00:00
Jeroen Vannevel
abab0154b6
comment
2022-01-05 01:48:57 +00:00
Jeroen Vannevel
fa0afb9576
additional test for a reference local (on top of mutable reference local)
2022-01-05 01:36:04 +00:00
Jeroen Vannevel
4c1a1b2570
failing test for a reference local
2022-01-05 01:27:15 +00:00
Jeroen Vannevel
cd5ad4e500
Don't include a ref if none was declared
2022-01-05 01:18:55 +00:00
Jeroen Vannevel
817f47828c
support ref params as well
2022-01-05 01:15:54 +00:00
Jeroen Vannevel
056e18fcbd
correctly handle mutable references
2022-01-05 01:03:27 +00:00
Côme ALLART
4a5341e044
fix(gen-doc-assist): remove lifetimes in description of new
2022-01-05 00:23:36 +01:00
bors[bot]
ac3ea3e81c
Merge #11112
...
11112: Evaluate constants in array repeat expression r=HKalbasi a=HKalbasi
cc #8655
Co-authored-by: hkalbasi <hamidrezakalbasi@protonmail.com>
2022-01-04 21:51:37 +00:00
hkalbasi
75c2acae6e
Evaluate constants in array repeat expression
2022-01-05 01:17:01 +03:30
Jeroen Vannevel
ec61abbe93
reduced the tests to their bare essence
2022-01-04 10:11:04 +00:00
Jeroen Vannevel
5beddf93e7
additional test without further usages
2022-01-04 02:12:53 +00:00
Jeroen Vannevel
95cabfd722
Correctly pass through mutable references when extracting a function
2022-01-04 01:48:08 +00:00
bors[bot]
7409880a07
Merge #11061
...
11061: Support "move if to guard" for if else chains r=weirane a=weirane
The idea is to first parse the if else chain into a vector of `(Condition, BlockExpr)`s until we reach an iflet branch, an else branch, or the end (the tail). Then add the match arms with guard for the vector, and add the tail with no if guard.
Because the whole original match arm is replaced and the generated code doesn't have redundent commas, I removed redundent commas in some test cases.
Closes #11033 .
Co-authored-by: Wang Ruochen <wrc@ruo-chen.wang>
2022-01-03 17:59:00 +00:00
Wang Ruochen
a19a32488d
Don't add pattern if there is a catch all afterwards
2022-01-03 09:38:45 -08:00
Dániel Buga
2e472bb746
Fix replace_match_with_if_let removing blocks with modifiers
...
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2022-01-03 14:07:34 +01:00
Kirill Bulatov
03291db801
Allow adding partially resolved types
2022-01-03 01:34:33 +02: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
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
660cf34d8c
dead code
2021-12-28 19:13:30 +03: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
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
Lukas Wirth
539b0c2582
fix: Fix inline local assist not working in let stmt initializer
2021-12-21 14:03:59 +01:00
Laurențiu Nicola
01143c6600
Fix typo in reformat number assist label
2021-12-21 09:45:20 +02: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
Wang Ruochen
71676ae89d
Support "move if to guard" for if else chains
2021-12-19 09:26:52 -08:00
ucrhh
b289f13c75
fix unwrap_block by removing double trimming
2021-12-18 23:19:53 +01:00
Laurențiu Nicola
6c799dac1e
Fix some clippy lints
2021-12-17 17:46:20 +02:00
Laurențiu Nicola
8ad7c0439c
Remove needless clones
2021-12-17 17:35:10 +02: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
Wang Ruochen
95a0de85d5
Support "move if to guard" with an else branch
2021-12-14 10:27:44 -08:00
Lukas Wirth
901c7c7277
match_ast!
takes a pattern to allow underscore usage
2021-12-14 12:44:31 +01: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]
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
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
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
143a30aa51
Show case-insensitive exact matches instead of fuzzy flyimport for short paths
2021-12-11 14:47:11 +01:00
Côme ALLART
9c0f9d02bf
feat: trait fn: add panicking example only if default panicks
2021-12-10 15:53:43 +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
Côme ALLART
dc4e4c7daa
fix: add mod files in path in generated examples
2021-12-07 23:34:53 +01:00
Côme ALLART
220137f1cf
fix: disable assist for documented functions
2021-12-07 18:02:18 +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
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
rainy-me
79b4e67b4f
fix: defer condition construction
2021-12-04 04:50:06 +09:00
rainy-me
fb90bf9cad
feat: handle while let to loop
2021-12-04 03:19:19 +09:00
Skyler Rain Ross
5b59a5eca8
refactor(assist/add_return_type): avoid threading needs_whitespace
2021-12-02 10:46:07 -08:00
Skyler Rain Ross
e031267602
fix: add return type works when there's missing whitespace
2021-12-02 09:28:18 -08:00
rainy-me
0bb08ccb8f
fix: derive path handling
2021-11-25 00:21:29 +09:00
bors[bot]
b69eee6487
Merge #10809
...
10809: fix: don't discard formatting of `use` lines r=Veykril a=iDawer
Use mutable syntax trees in `merge_imports`, `split_imports`. This tries to resolve #9013 . But I haven't much managed to simplify code of merging.
Also resolve #9361 . It reuses a use tree under the cursor so that comments+indentation are preserved. Merged trees are just appended to the end.
This touches bunch of tests. I removed the sorting of use trees as it needs a proper implementation that takes into account comments and line wrapping. I think it is rustfmt's job or at least until we get a close implementation.
Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2021-11-22 14:29:24 +00:00
rainy-me
ebffaa4274
fix: check inline left of binary_expression
2021-11-21 01:48:04 +09:00
iDawer
601413df8f
Use mutable syntax trees in merge_imports
, split_imports
2021-11-19 20:02:27 +05:00
bors[bot]
6c7be6cd84
Merge #10734
...
10734: fix: add generic parameters in convert to manual impl assist r=Veykril a=TheDoctor314
Fixes #10041 .
Co-authored-by: TheDoctor314 <64731940+TheDoctor314@users.noreply.github.com>
2021-11-16 11:27:11 +00:00
Lukas Wirth
92f7db447c
minor: Lift out FxIndex{Map/Set} types into ide_db
2021-11-16 12:15:47 +01:00
TheDoctor314
58a24de7d8
Fix impl_def_from_trait
...
Revert "Fix `impl_trait` function to emit correct ast"
This reverts commit 55a4813151
.
Fix `impl_def_from_trait`
It now generates the correct `ast::Impl` using
`generate_trait_impl_text` and parses it to form the right node (copied
from the private fn 'make::ast_from_text').
2021-11-15 22:28:22 +05:30
rainy-me
1f3da38d94
adjust test case and stop deleting newline
2021-11-14 20:56:28 +09:00
rainy-me
c9949c040c
add missing match arms end of last arm
2021-11-14 02:32:10 +09:00
TheDoctor314
55a4813151
Fix impl_trait
function to emit correct ast
...
`impl_trait` code copied from `generate_impl_text_inner` to properly
handle the bounds for the generic parameters.
2021-11-11 14:16:59 +05:30
TheDoctor314
e0e8d877c0
Add generic bounds in test
2021-11-11 14:16:29 +05:30
Lukas Wirth
7776aad166
internal: Flatten Definition::ModuleDef
variant
2021-11-11 00:05:53 +01:00
TheDoctor314
05b368f065
Add generic parameters for manual impl assist
...
The `impl_trait` function takes an optional `GenericParamList` to create
the trait impl.
2021-11-10 12:53:48 +05:30
TheDoctor314
4f93fa1213
Add failing tests for generic struct
2021-11-10 12:53:48 +05:30
bors[bot]
c96481e25f
Merge #10691
...
10691: minor: Use array `into_iter` in more places r=lnicola a=lnicola
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-11-04 05:52:05 +00:00
Laurențiu Nicola
139bf9b4e1
Use array into_iter in more places
2021-11-04 07:51:20 +02:00
Lukas Wirth
96db0d8bdd
Add Semantics::original_ast_node for upmapping nodes out of macro files
2021-11-03 21:12:36 +01:00
Lukas Wirth
7fdbdc4ab2
Enable auto-import and qualify-path in derive attributes
2021-10-28 18:40:38 +02:00
Lukas Wirth
3018ffd85e
Refactor ide handling for paths in derive inputs
2021-10-28 16:47:19 +02:00
bors[bot]
210a1d5ece
Merge #10629
...
10629: Add assist for replacing turbofish with explicit type. r=Veykril a=terrynsun
Converts `::<_>` to an explicit type assignment.
```
let args = args.collect::<Vec<String>>();
```
->
```
let args: Vec<String> = args.collect();
```
Closes #10285
Co-authored-by: Terry Sun <terrynsun@gmail.com>
2021-10-27 21:40:28 +00:00
Terry Sun
d800a1bc93
fixup! rustfmt
2021-10-27 10:58:31 -07:00
Terry Sun
3bbd61d674
fixup! delay to_string() until assist is called
2021-10-27 10:46:25 -07:00
Terry Sun
6abdbdd0c9
fixup! narrow range; method calls; check for only one type
2021-10-26 17:50:25 -07:00
Lukas Wirth
a2365ea18a
fix: fix extract_variable not working on macro_call
2021-10-25 21:46:44 +02:00
Terry Sun
324d7d33e8
Add assist for replacing turbofish with explicit type.
...
Converts `::<_>` to an explicit type assignment.
```
let args = args.collect::<Vec<String>>();
```
->
```
let args: Vec<String> = args.collect();
```
Closes #10285
2021-10-24 17:38:45 -07:00
bors[bot]
fe7c516084
Merge #10602
...
10602: Add qualify method call assist r=Veykril a=qepasa
This adds `qualify_method_call` assist that allows to replace a method (or trait) call that resolves with its fully qualified path.
For example, for stuct method:
```rust
struct Foo;
impl Foo {
fn foo(&self) {}
}
```
```
let foo = Foo {};
foo.fo$0o();
```
becomes
```rust
let foo = Foo {};
Foo::foo(&foo);
```
for a trait method:
```rust
struct Foo;
trait FooTrait {
fn foo(&self) {}
}
impl FooTrait for Foo {
fn foo(&self) {}
}
```
following call:
```rust
let foo = Foo {};
foo.fo$0o();
```
becomes:
```rust
let foo = Foo {};
FooTrait::foo(&foo);
```
fixes #10453
Co-authored-by: Paweł Palenica <pawelpalenica11@gmail.com>
2021-10-23 08:34:51 +00:00
bors[bot]
a75353e8ac
Merge #9939
...
9939: feat: Adding extract_module assist r=Veykril a=feniljain
Should solve https://github.com/rust-analyzer/rust-analyzer/issues/9591
Co-authored-by: vi_mi <fenil.jain2018@vitstudent.ac.in>
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-10-22 09:29:16 +00:00
vi_mi
3e73a46660
fix: making tests compatible with new trimmed sel_range
2021-10-22 09:16:56 +00:00
Paweł Palenica
bfc86f64c3
apply code review suggestions
2021-10-21 23:42:14 -07:00
Laurențiu Nicola
ca44b6892e
Use array IntoIter
2021-10-22 09:23:29 +03:00
Paweł Palenica
c2fd0c48a6
cleanup qualify_path
2021-10-20 23:39:25 -07:00