55f8c66a60
When encountering code like ```rust fn foo() -> i32 { match 0 { 1 => return 0, 2 => "", _ => 1, } } ``` Point at the return type and not at the prior arm, as that arm has type `!` which isn't influencing the arm corresponding to arm `2`. Fix #78124.
26 lines
701 B
Plaintext
26 lines
701 B
Plaintext
error[E0308]: `?` operator has incompatible types
|
|
--> $DIR/remove-question-symbol-with-paren.rs:5:6
|
|
|
|
|
LL | fn foo() -> Option<()> {
|
|
| ---------- expected `Option<()>` because of return type
|
|
LL | let x = Some(());
|
|
LL | (x?)
|
|
| ^^ expected `Option<()>`, found `()`
|
|
|
|
|
= note: `?` operator cannot convert from `()` to `Option<()>`
|
|
= note: expected enum `Option<()>`
|
|
found unit type `()`
|
|
help: try removing this `?`
|
|
|
|
|
LL - (x?)
|
|
LL + (x)
|
|
|
|
|
help: try wrapping the expression in `Some`
|
|
|
|
|
LL | (Some(x?))
|
|
| +++++ +
|
|
|
|
error: aborting due to previous error
|
|
|
|
For more information about this error, try `rustc --explain E0308`.
|