+use crate::consts::constant_simple;
use crate::utils;
use if_chain::if_chain;
use rustc_errors::Applicability;
///
/// **Example:**
/// ```rust
- /// match int_option {
+ /// let foo: Option<i32> = None;
+ /// match foo {
/// Some(v) => v,
/// None => 1,
- /// }
+ /// };
/// ```
///
/// Use instead:
/// ```rust
- /// int_option.unwrap_or(1)
+ /// let foo: Option<i32> = None;
+ /// foo.unwrap_or(1);
/// ```
pub MANUAL_UNWRAP_OR,
complexity,
then {
let reindented_none_body =
utils::reindent_multiline(none_body_snippet.into(), true, Some(indent));
- let eager_eval = utils::eager_or_lazy::is_eagerness_candidate(cx, none_arm.body);
+ let eager_eval = constant_simple(cx, cx.typeck_results(), none_arm.body).is_some();
let method = if eager_eval {
"unwrap_or"
} else {
LL | | };
| |_____^ help: replace with: `Some(1).unwrap_or(42)`
-error: this pattern reimplements `Option::unwrap_or_else`
+error: this pattern reimplements `Option::unwrap_or`
--> $DIR/manual_unwrap_or.rs:18:5
|
LL | / match Some(1) {
LL | | Some(i) => i,
LL | | None => 1 + 42,
LL | | };
- | |_____^ help: replace with: `Some(1).unwrap_or_else(|| 1 + 42)`
+ | |_____^ help: replace with: `Some(1).unwrap_or(1 + 42)`
error: this pattern reimplements `Option::unwrap_or_else`
--> $DIR/manual_unwrap_or.rs:24:5