bors
31c12ec282
Auto merge of #14266 - Veykril:generalize-eager-lazy, r=Veykril
...
feature: Make replace_or_with_or_else assists more generally applicable
2023-03-06 21:41:46 +00:00
Lukas Wirth
0ce06088f8
Fix inlay-hint tests
2023-03-06 22:39:42 +01:00
Lukas Wirth
34a3187ee8
internal: Mark unresolved field, unresolved method and expected function diagnostics experimental
2023-03-06 22:24:38 +01:00
Lukas Wirth
199bc82ce8
feature: Make replace_or_with_or_else assists more generally applicable
2023-03-06 22:17:30 +01:00
hkalbasi
2cce9dc3e9
Make unused_mut
diagnostic experimental
2023-03-06 21:09:09 +03:30
hkalbasi
af90ec8096
Partially support "overloaded deref" MIR lowering
2023-03-06 21:09:09 +03:30
hkalbasi
bf0f99f15d
Fix overloaded deref unused mut false positive
2023-03-06 21:09:09 +03:30
hkalbasi
6377d50bd1
Support "for loop" MIR lowering
2023-03-06 21:09:09 +03:30
hkalbasi
ac04bfd7a7
Add View Mir
command and fix some bugs
2023-03-06 21:09:09 +03:30
hkalbasi
a25710b0c0
Add need-mut
and unused-mut
diagnostics
2023-03-06 21:09:08 +03:30
hkalbasi
c0a0664d12
Support "or patterns" MIR lowering
2023-03-06 21:09:08 +03:30
hkalbasi
61ad6a96ad
Add BindingId
2023-03-06 21:09:08 +03:30
bors
a360fab9a3
Auto merge of #14261 - Veykril:ty-perf, r=Veykril
...
internal: Re-use the resolver in `InferenceContext` instead of rebuilding it whenever needed
This reduced inference time on my local build by roughly ~1 sec (out of like 60)
2023-03-06 10:54:27 +00:00
bors
900efbefdd
Auto merge of #14260 - Veykril:if-let-match-adjust, r=Veykril
...
fix: Adjust `replace_match_with_if_let` applicability range
It currently trigger in the entirety of match which is less than ideal
2023-03-06 10:36:26 +00:00
Lukas Wirth
7be48ac32c
Adjust replace_match_with_if_let applicability range
2023-03-05 16:52:07 +01:00
Lukas Wirth
d8b1ec6a25
Remove unnecessary option wrapping
2023-03-05 15:43:02 +01:00
Lukas Wirth
27fad2ad75
Lift segment check out of the loop in resolve_path_in_value_ns
2023-03-05 15:42:40 +01:00
Lukas Wirth
a51267c5e0
Allocate traits in scope upfront when type checking instead of recollecting them everytime
2023-03-05 15:04:46 +01:00
Lukas Wirth
a8606e5363
Re-use the resolver in InferenceContext instead of rebuilding it on every expression change
2023-03-05 14:37:44 +01:00
hkalbasi
ae8ce99d97
Bring back the hex in const hover
2023-03-05 13:53:49 +03:30
bors
e6ba791dce
Auto merge of #14252 - Veykril:field-mcall-fallback, r=Veykril
...
internal: Handle fields called as method calls as the fields they resolve to
Confusing PR title tbf but this makes it so `bar` in `foo.bar()` resolves to the field if it exists and no method with the same name exists. Improves UX slightly when incorrectly calling a field.
2023-03-04 19:35:03 +00:00
Lukas Wirth
5a91f015b4
internal: Handle fields called as method calls as the fields they resolve to
2023-03-04 20:33:28 +01:00
bors
94dc7a3eb0
Auto merge of #14251 - Veykril:ty-expr-stmt, r=Veykril
...
internal: Set expectation for no-semi expression statements to unit
2023-03-04 19:01:47 +00:00
Lukas Wirth
b85e2af898
Correctly handle non-semi statement expressions for never coercions
2023-03-04 19:48:03 +01:00
Lukas Wirth
95c4cb991f
Handle new hir block kinds in scope calculations
2023-03-04 15:22:39 +01:00
Lukas Wirth
b8276481e7
Fix extract_variable test
2023-03-04 14:58:58 +01:00
Lukas Wirth
1b5bc83118
Remove weird nesting of effect blocks in hir
2023-03-04 14:45:57 +01:00
Lukas Wirth
24ba1bed04
Set expectation for no-semi expression statements to unit
2023-03-04 12:48:57 +01:00
bors
5efcfe5ca9
Auto merge of #14244 - Veykril:metrics, r=lnicola
...
internal: Report type metrics for patterns
```
❯ cargo run --release -p rust-analyzer -q analysis-stats --memory-usage .
Database loaded: 2.09s, 218mb (metadata 275.07ms, 21mb; build 1.29s, 504kb)
crates: 44, mods: 916, decls: 19582, fns: 14631
Item Collection: 14.33s, 472mb
exprs: 420422, ??ty: 68 (0%), ?ty: 141 (0%), !ty: 1
pats: 82968, ??ty: 11 (0%), ?ty: 10 (0%), !ty: 178
Inference: 47.84s, 745mb
Total: 62.16s, 1217mb
```
We currently have 178 mismatches on r-a itself
2023-03-04 08:31:20 +00:00
Lukas Wirth
800ab650ac
split expression and pattern metrics
2023-03-04 09:21:17 +01:00
Pascal Kuthe
2e465d18f2
generate correct completion edits for missing macro arguments
...
rust-analyzer used the token at the cursor after macro expansion
to decide whether to replace the token at the cursor before macro
expansion. In most cases these two are the same but in some cases these
can mismatch which can lead to incorrect replacements.
For example if an ident/expr macro argument is missing rust-analyzer
generates a "missing" identifier as a placeholder, there is only a
brace at the cursor. Therefore, rust-analyzer will incorrectly replace
the macro brace with the completion in that case leading to #14246 .
Using the expanded token type was intentional. However, this doesn't
seem to ever be desirable (this is supported by the fact that there
were no tests that relied on this behavior) since the type of edit to
perform should always be determined by the token it's actually applied
to.
2023-03-04 02:05:09 +01:00
Lukas Wirth
29150c2315
Disable pattern type mismatches again
2023-03-03 22:41:41 +01:00
Lukas Wirth
c12fac698f
Report type metrics for patterns
2023-03-03 21:08:45 +01:00
Lukas Wirth
e7485a0416
Diagnose unresolved method calls
2023-03-03 20:43:13 +01:00
Lukas Wirth
78b2dd813a
Diagnose unresolved field accesses
2023-03-03 20:43:10 +01:00
Lukas Wirth
3c7a0aa00e
Diagnose call expression on non-callable things
2023-03-03 20:43:05 +01:00
bors
3ba876a4a6
Auto merge of #14240 - Veykril:coerce-many, r=Veykril
...
Diagnose value breaks in incorrect breakables
2023-03-03 17:03:39 +00:00
Lukas Wirth
41f234df09
Diagnose value breaks in incorrect breakables
2023-03-03 17:28:57 +01:00
Lukas Wirth
02eb2d758e
Distinguish between expected and final type in CoerceMany
2023-03-03 16:52:09 +01:00
bors
6756294aa0
Auto merge of #14184 - lowr:feat/trait-alias-def, r=Veykril
...
Handle trait alias definitions
Part of #2773
This PR adds a bunch of structs and enum variants for trait aliases. Trait aliases should be handled as an independent item because they are semantically distinct from traits.
I basically started by adding `TraitAlias{Id, Loc}` to `hir_def::item_tree` and iterated adding necessary stuffs until compiler stopped complaining what's missing. Let me know if there's still anything I need to add.
I'm opening up this PR for early review and stuff. I'm planning to add tests for IDE functionalities in this PR, but not type-related support, for which I put FIXME notes.
2023-03-03 15:45:18 +00:00
Ryo Yoshida
f8eac19b33
Support trait aliases in IDE where type support isn't needed
2023-03-04 00:24:08 +09:00
Ryo Yoshida
29c957f973
Lower and handle trait aliases in HIR
2023-03-04 00:24:07 +09:00
Ryo Yoshida
e2ec3a6561
Refactor generic parameter lowering
...
Since we moved impl trait handling to other place, there are only two
cases now: those that introduce implicit `Self` parameter and those that
don't.
2023-03-04 00:24:05 +09:00
Ryo Yoshida
356d12eae4
refactor: leverage HasAttrs
for code brevity
2023-03-04 00:24:03 +09:00
Ryo Yoshida
2e7d2c2d04
Parse trait alias as a distinct AST type
2023-03-04 00:23:56 +09:00
bors
a8d3c46082
Auto merge of #14239 - Veykril:sysroot-cli, r=Veykril
...
fix: Load the sysroot in all CLI commands
2023-03-03 10:51:15 +00:00
bors
c229a836e8
Auto merge of #14222 - Veykril:pat-mismatch-diags, r=Veykril
...
Show pattern mismatch diagnostics
2023-03-03 10:33:54 +00:00
Lukas Wirth
80ddfb89a2
fix: Load the sysroot in all CLI commands
2023-03-03 11:21:27 +01:00
Lukas Wirth
522823f610
Fix text fixtures of missing_match_arms diagnostics
2023-03-03 11:13:06 +01:00
Lukas Wirth
44e2c6ea92
Don't emit two type mismatches for literal pattern mismatches
2023-03-03 10:42:49 +01:00