diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-11-06 23:12:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-06 23:12:04 +0100 |
| commit | 1d9fe9cd0678ca0dd04573da08cc18503017a3fa (patch) | |
| tree | 69b0579a935e17af7f0ff605883b3d5f2ae8923d /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | 4c49db35fc671a522dbe07bfbeda8c7e7897108c (diff) | |
| parent | d93f7f93c44a7106071411224c0615c7cfcb2468 (diff) | |
| download | rust-1d9fe9cd0678ca0dd04573da08cc18503017a3fa.tar.gz rust-1d9fe9cd0678ca0dd04573da08cc18503017a3fa.zip | |
Rollup merge of #90627 - camelid:suggest-box-deref, r=davidtwco
Suggest dereference of `Box` when inner type is expected
For example:
enum Ty {
Unit,
List(Box<Ty>),
}
fn foo(x: Ty) -> Ty {
match x {
Ty::Unit => Ty::Unit,
Ty::List(elem) => foo(elem),
}
}
Before, the only suggestion was to rewrap `inner` with `Ty::Wrapper`,
which is unhelpful and confusing:
error[E0308]: mismatched types
--> src/test/ui/suggestions/boxed-variant-field.rs:9:31
|
9 | Ty::List(elem) => foo(elem),
| ^^^^
| |
| expected enum `Ty`, found struct `Box`
| help: try using a variant of the expected enum: `Ty::List(elem)`
|
= note: expected enum `Ty`
found struct `Box<Ty>`
Now, rustc will first suggest dereferencing the `Box`, which is most
likely what the user intended:
error[E0308]: mismatched types
--> src/test/ui/suggestions/boxed-variant-field.rs:9:31
|
9 | Ty::List(elem) => foo(elem),
| ^^^^ expected enum `Ty`, found struct `Box`
|
= note: expected enum `Ty`
found struct `Box<Ty>`
help: try dereferencing the `Box`
|
9 | Ty::List(elem) => foo(*elem),
| +
help: try using a variant of the expected enum
|
9 | Ty::List(elem) => foo(Ty::List(elem)),
| ~~~~~~~~~~~~~~
r? ``@davidtwco``
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
