mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-17 02:08:28 +00:00
f0e586c251
Unlike past similar work done in #6228, expand the existing `or_fun_call` lint to detect `or_insert` calls with a `T::new()` or `T::default()` argument, much like currently done for `unwrap_or` calls. In that case, suggest the use of `or_default`, which is more idiomatic. Note that even with this change, `or_insert_with(T::default)` calls aren't detected as candidates for `or_default()`, in the same manner that currently `unwrap_or_else(T::default)` calls aren't detected as candidates for `unwrap_or_default()`. Also, as a nearby cleanup, change `KNOW_TYPES` from `static` to `const`, since as far as I understand it's preferred (should Clippy have a lint for that?). Fixes #3812.
160 lines
6.1 KiB
Text
160 lines
6.1 KiB
Text
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:49:22
|
|
|
|
|
LL | with_constructor.unwrap_or(make());
|
|
| ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(make)`
|
|
|
|
|
= note: `-D clippy::or-fun-call` implied by `-D warnings`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:52:14
|
|
|
|
|
LL | with_new.unwrap_or(Vec::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:55:21
|
|
|
|
|
LL | with_const_args.unwrap_or(Vec::with_capacity(12));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| Vec::with_capacity(12))`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:58:14
|
|
|
|
|
LL | with_err.unwrap_or(make());
|
|
| ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| make())`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:61:19
|
|
|
|
|
LL | with_err_args.unwrap_or(Vec::with_capacity(12));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| Vec::with_capacity(12))`
|
|
|
|
error: use of `unwrap_or` followed by a call to `default`
|
|
--> $DIR/or_fun_call.rs:64:24
|
|
|
|
|
LL | with_default_trait.unwrap_or(Default::default());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `default`
|
|
--> $DIR/or_fun_call.rs:67:23
|
|
|
|
|
LL | with_default_type.unwrap_or(u64::default());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:70:18
|
|
|
|
|
LL | self_default.unwrap_or(<FakeDefault>::default());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(<FakeDefault>::default)`
|
|
|
|
error: use of `unwrap_or` followed by a call to `default`
|
|
--> $DIR/or_fun_call.rs:73:18
|
|
|
|
|
LL | real_default.unwrap_or(<FakeDefault as Default>::default());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:76:14
|
|
|
|
|
LL | with_vec.unwrap_or(vec![]);
|
|
| ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:79:21
|
|
|
|
|
LL | without_default.unwrap_or(Foo::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Foo::new)`
|
|
|
|
error: use of `or_insert` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:82:19
|
|
|
|
|
LL | map.entry(42).or_insert(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_default()`
|
|
|
|
error: use of `or_insert` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:85:23
|
|
|
|
|
LL | map_vec.entry(42).or_insert(vec![]);
|
|
| ^^^^^^^^^^^^^^^^^ help: try this: `or_default()`
|
|
|
|
error: use of `or_insert` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:88:21
|
|
|
|
|
LL | btree.entry(42).or_insert(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_default()`
|
|
|
|
error: use of `or_insert` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:91:25
|
|
|
|
|
LL | btree_vec.entry(42).or_insert(vec![]);
|
|
| ^^^^^^^^^^^^^^^^^ help: try this: `or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:94:21
|
|
|
|
|
LL | let _ = stringy.unwrap_or(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:102:21
|
|
|
|
|
LL | let _ = Some(1).unwrap_or(map[&1]);
|
|
| ^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| map[&1])`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:104:21
|
|
|
|
|
LL | let _ = Some(1).unwrap_or(map[&1]);
|
|
| ^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| map[&1])`
|
|
|
|
error: use of `or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:128:35
|
|
|
|
|
LL | let _ = Some("a".to_string()).or(Some("b".to_string()));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| Some("b".to_string()))`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:167:14
|
|
|
|
|
LL | None.unwrap_or(ptr_to_ref(s));
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ptr_to_ref(s))`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:173:14
|
|
|
|
|
LL | None.unwrap_or(unsafe { ptr_to_ref(s) });
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| unsafe { ptr_to_ref(s) })`
|
|
|
|
error: use of `unwrap_or` followed by a function call
|
|
--> $DIR/or_fun_call.rs:175:14
|
|
|
|
|
LL | None.unwrap_or( unsafe { ptr_to_ref(s) } );
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| unsafe { ptr_to_ref(s) })`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:189:14
|
|
|
|
|
LL | .unwrap_or(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:202:14
|
|
|
|
|
LL | .unwrap_or(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:214:14
|
|
|
|
|
LL | .unwrap_or(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: use of `unwrap_or` followed by a call to `new`
|
|
--> $DIR/or_fun_call.rs:225:10
|
|
|
|
|
LL | .unwrap_or(String::new());
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
|
|
|
|
error: aborting due to 26 previous errors
|
|
|