Provide better compiler output when using ?
on Option
in fn returning Result
and vice-versa
This commit is contained in:
parent
ce994b633d
commit
fbc4168d80
@ -321,7 +321,7 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
|
||||
err.span_suggestion_verbose(
|
||||
span.shrink_to_lo(),
|
||||
"consider converting the `Option<T>` into a `Result<T, _>` using `Option::ok_or` or `Option::ok_or_else`",
|
||||
".ok_or_else(|_| /* error value */)".to_string(),
|
||||
".ok_or_else(|| /* error value */)".to_string(),
|
||||
Applicability::HasPlaceholders,
|
||||
);
|
||||
} else if is_try && is_from && should_convert_result_to_option {
|
||||
@ -329,7 +329,7 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
|
||||
span.shrink_to_lo(),
|
||||
"consider converting the `Result<T, _>` into an `Option<T>` using `Result::ok`",
|
||||
".ok()".to_string(),
|
||||
Applicability::HasPlaceholders,
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -8,8 +8,8 @@ LL | a?;
|
||||
= note: required by `std::convert::From::from`
|
||||
help: consider converting the `Option<T>` into a `Result<T, _>` using `Option::ok_or` or `Option::ok_or_else`
|
||||
|
|
||||
LL | a.ok_or_else(|_| /* error value */)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | a.ok_or_else(|| /* error value */)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: `?` couldn't convert the error to `std::option::NoneError`
|
||||
--> $DIR/option-to-result.rs:11:6
|
||||
|
@ -8,8 +8,8 @@ LL | x?;
|
||||
= note: required by `std::convert::From::from`
|
||||
help: consider converting the `Option<T>` into a `Result<T, _>` using `Option::ok_or` or `Option::ok_or_else`
|
||||
|
|
||||
LL | x.ok_or_else(|_| /* error value */)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | x.ok_or_else(|| /* error value */)?;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
|
||||
--> $DIR/try-on-option.rs:13:5
|
||||
|
Loading…
x
Reference in New Issue
Block a user