diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2023-11-02 21:22:42 +0000 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2023-11-27 16:19:02 +0000 |
| commit | 8221f9c837f46461d2dd6f29a4468b3a0ee4b508 (patch) | |
| tree | a12a92f71a213ef32c017df9d2c1382650e8202d /compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp | |
| parent | aa330518f47f26c627448832e2cae0a00c57a475 (diff) | |
| download | rust-8221f9c837f46461d2dd6f29a4468b3a0ee4b508.tar.gz rust-8221f9c837f46461d2dd6f29a4468b3a0ee4b508.zip | |
Account for `!` arm in tail `match` expr
On functions with a default return type that influences the coerced type
of `match` arms, check if the failing arm is actually of type `!`. If
so, suggest changing the return type so the coercion against the prior
arms is successful.
```
error[E0308]: `match` arms have incompatible types
--> $DIR/match-tail-expr-never-type-error.rs:9:13
|
LL | fn bar(a: bool) {
| - help: try adding a return type: `-> i32`
LL | / match a {
LL | | true => 1,
| | - this is found to be of type `{integer}`
LL | | false => {
LL | | never()
| | ^^^^^^^
| | |
| | expected integer, found `()`
| | this expression is of type `!`, but it get's coerced to `()` due to its surrounding expression
LL | | }
LL | | }
| |_____- `match` arms have incompatible types
```
Fix #24157.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
