BooksBaum
8a9feeddd3
Remove match_ast
usage
2021-08-19 14:17:23 +02:00
BooksBaum
2c27adc0a3
Remove match_ast!
macro call
...
Add node about uncommenting tuple in macro call
2021-08-19 14:09:52 +02:00
BooksBaum
b1ebb82f32
Add deref (*
) handling for usages of ref tuples
2021-08-17 19:23:07 +02:00
BooksBaum
384fae7fcd
Switch order of assists
...
Destructure in sub-pattern before Destructure in place to favor the
first one
2021-08-17 19:23:06 +02:00
BooksBaum
d0cf28322a
Add generated doctest
2021-08-17 19:23:06 +02:00
BooksBaum
5b9f8e7e8e
Fix errors from rebase master
...
Note:
2nd Assist description is moved down: generated doc tests extracts now
all tests (previously only the first one). But it uses the first
`Assist` name -- which is the wrong one for the 2nd test. And 2nd assist
is currently disabled -> would fail anyway.
2021-08-17 19:23:06 +02:00
BooksBaum
b441aa2046
Cleanup according to style-requirements in tests
2021-08-17 19:23:06 +02:00
BooksBaum
45ef57bd23
Fix: different assist ids in doc and code
2021-08-17 19:23:05 +02:00
BooksBaum
0d2490f785
Handle tuple in macro call
...
Only tuple name is handled (uncommented), not tuple index
2021-08-17 19:23:05 +02:00
BooksBaum
450a9c5b12
Add destructure in sub-pattern (after @
)
2021-08-17 19:23:05 +02:00
BooksBaum
3e4051938d
Handle mut
& ref
2021-08-17 19:23:04 +02:00
BooksBaum
478b2988c0
Add Destructure Tuple
2021-08-17 19:22:57 +02:00
Laurențiu Nicola
c9f448a834
Fix some clippy lints
2021-08-16 22:04:26 +03:00
Yoshua Wuyts
067dc660ae
implement feedback from review
2021-08-16 18:23:51 +02:00
Yoshua Wuyts
9374d526da
fix debug tuple structs
2021-08-16 17:39:08 +02:00
Yoshua Wuyts
b67378f53e
fix debug record structs
2021-08-16 12:58:06 +02:00
Aleksey Kladov
3c49a9f079
minor: move functionality to a better place
2021-08-14 20:43:28 +03:00
Aleksey Kladov
e300f58d2c
internal: remove one more usage of old editing API.
2021-08-14 20:17:16 +03:00
Aleksey Kladov
a26b1c3923
internal: remove old editing API
2021-08-14 19:45:47 +03:00
bors[bot]
5d7ff6efe3
Merge #9894
...
9894: internal: use standard test style r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-08-14 15:59:47 +00:00
Aleksey Kladov
c3bbeb947c
internal: use standard test style
2021-08-14 18:53:21 +03:00
Lukas Wirth
37ad9cb2a5
Don't use non cache syntaxnodes in generate_function for lookups
2021-08-14 17:51:11 +02:00
Aleksey Kladov
a78decc466
internal: make assist naming consistent
2021-08-14 18:39:56 +03:00
Aleksey Kladov
dc17b35e62
internal: remove a remnant of old editing infra
2021-08-14 18:24:42 +03:00
Aleksey Kladov
90357a9090
internal: merge hir::BinaryOp and ast::BinOp
2021-08-14 18:10:01 +03:00
Aleksey Kladov
6df00f8495
internal: make naming consistent
2021-08-14 17:01:28 +03:00
Aleksey Kladov
beca92b245
internal: make invert binary op more robust
...
Previously, we only inverted comparison operators (< and the like) if
the type implemented Ord. This doesn't make sense: if `<` works, then
`>=` will work as well!
Extra semantic checks greatly reduce robustness and predictability of
the assist, it's better to keep things simple.
2021-08-14 16:40:00 +03:00
bors[bot]
43af7920af
Merge #9871
...
9871: Jump to generated func r=mahdi-frms a=rylev
Worked on this with `@yoshuawuyts.`
We thought we ran into an issue with the `generate_function` assist where the code was not being generated in a certain situations. However, it wasn't actually a bug just a very confusing implementation where the cursor is not moved to the newly generated function. This happened when the return type was successfully inferred (and not unit). The function would be generated, but selection would not be changed.
This can be very confusing: If the function is generated somewhat far from where the assist is being invoked, the user never sees that the code was generated (nor are they given the chance to actually implement the function body).
This PR makes it so that the cursor is _always_ moved to somewhere in the newly generated function. In addition, if we can infer unit as the type, then we do not still generate `-> ()` as the return type. Instead, we simply omit the return type.
This means the selection will move to either one of two places:
* A generated `-> ()` return type when we cannot successfully infer the return type.
* The `todo!()` body when we can successfully infer the return type.
Co-authored-by: Ryan Levick <me@ryanlevick.com>
2021-08-13 11:19:16 +00:00
Ryan Levick
1cc43ab7f4
Add documentation on how whether a generated return type should be focused or not
2021-08-13 11:46:08 +02:00
Jonas Schievink
d568e7686a
Support if let
match guards
2021-08-13 00:25:14 +02:00
bors[bot]
baf1494374
Merge #9807
...
9807: Implicit `Sized` bounds r=iDawer a=iDawer
This should close #8984
`hir_ty`:
- Type parameters, associated types and `impl Trait` are `Sized` by deafault except `Self` in a trait.
- Implicit `Sized` bound is added to end of predicate list. It does not check if such bound is present already. Also it does not track the bound is implicit.
- Allowed ambiguous unsize coercion if Chalk returns definite guidance.
- Allowed ambiguous autoderef if Chalk returns definite guidance.
`hir_def`:
- `ItemTree` pretty printing shows `?Sized` bounds.
`HirDisplay`:
- `impl Trait` with weird bounds rendered correctly.
- `Sized`/`?Sized` bounds are not shown if they are default.
### Perf
`./target/rust-analyzer-baseline_8a843113 -q analysis-stats --memory-usage .`
```
Database loaded: 1.63s, 287minstr, 91mb
crates: 38, mods: 741, decls: 15914, fns: 11835
Item Collection: 26.80s, 73ginstr, 338mb
exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 174
Inference: 50.28s, 116ginstr, 516mb
Total: 77.08s, 189ginstr, 855mb
```
`./target/rust-analyzer-sized-fixed_ambig_coercion-de074fe6 -q analysis-stats --memory-usage .`
```
Database loaded: 1.63s, 287minstr, 91mb
crates: 38, mods: 741, decls: 15914, fns: 11835
Item Collection: 26.95s, 73ginstr, 338mb
exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 166
Inference: 96.39s, 234ginstr, 543mb
Total: 123.33s, 307ginstr, 881mb
```
Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
2021-08-12 17:55:29 +00:00
Dawer
6c366ade00
Clean up
2021-08-12 21:20:28 +05:00
Ryan Levick
a5c46e5a88
Factor out return type handling for both function and method
2021-08-12 16:05:32 +02:00
Ryan Levick
0834e05045
Always fall back to focusing on generated function body
2021-08-12 14:56:39 +02:00
Ryan Levick
e8de34b6b3
Use term on label for generating method impl
2021-08-12 14:01:15 +02:00
bors[bot]
1376ece497
Merge #9863
...
9863: feat: Generate default trait fn impl when generating `PartialEq` r=yoshuawuyts a=yoshuawuyts
Implements a default trait function body when generating the `PartialEq` trait for a type. Thanks!
r? `@veykril`
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
2021-08-12 10:18:02 +00:00
Yoshua Wuyts
97ec6a27ec
add make::ext::path_from_idents
2021-08-12 12:17:09 +02:00
Yoshua Wuyts
df19895ba6
implement feedback from review
2021-08-12 11:50:01 +02:00
Yoshua Wuyts
8ed24029c1
rm remaining todo comment
2021-08-11 23:30:00 +02:00
Yoshua Wuyts
2fff019b6b
improve codegen
2021-08-11 20:33:13 +02:00
Yoshua Wuyts
6c4a94b03a
finishing touches
2021-08-11 20:04:05 +02:00
Yoshua Wuyts
c4e10c81b9
gen partialeq for tuple enums
2021-08-11 20:01:19 +02:00
Yoshua Wuyts
741e27b414
dedup PartialEq for Record enums
2021-08-11 19:40:47 +02:00
Lukas Wirth
6045059916
extract_variable handles selection ranges better
2021-08-11 17:52:09 +02:00
Yoshua Wuyts
fc17eb482d
gen PartialEq for Record enums
...
Co-Authored-By: Ryan Levick <rylev@users.noreply.github.com>
2021-08-11 17:15:12 +02:00
bors[bot]
f438dbb100
Merge #9860
...
9860: fix: Fix extract_function tagging params as mut unnecessarily r=Veykril a=Veykril
Fixes #9822
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-11 15:10:26 +00:00
Lukas Wirth
6d960ab032
Fix extract_function tagging params as mut unnecessarily
2021-08-11 17:09:51 +02:00
Aleksey Kladov
629c68e80d
internal: document that ascription is preferred to a turbo fish
2021-08-11 14:16:15 +03:00
Yoshua Wuyts
1cf7af7032
wip enum record/tuple generation
2021-08-10 22:08:14 +02:00
Yoshua Wuyts
65ce87cad8
gen PartialEq for basic enums
2021-08-10 21:05:23 +02:00