clippy_lint: Add test cases
This commit is contained in:
parent
b41b38cb7f
commit
2270ff4d16
2 changed files with 91 additions and 10 deletions
|
|
@ -1,8 +1,41 @@
|
|||
#![allow(unused)]
|
||||
#![warn(clippy::ref_option_ref)]
|
||||
|
||||
type OptRefU32<'a> = &'a Option<&'a u32>;
|
||||
type OptRef<'a, T> = &'a Option<&'a T>;
|
||||
static THRESHOLD: i32 = 10;
|
||||
static REF_THRESHOLD: &Option<&i32> = &Some(&THRESHOLD);
|
||||
const CONST_THRESHOLD: &i32 = &10;
|
||||
const REF_CONST: &Option<&i32> = &Some(&CONST_THRESHOLD);
|
||||
|
||||
type RefOptRefU32<'a> = &'a Option<&'a u32>;
|
||||
type RefOptRef<'a, T> = &'a Option<&'a T>;
|
||||
|
||||
fn foo(data: &Option<&u32>) {}
|
||||
|
||||
fn bar(data: &u32) -> &Option<&u32> {
|
||||
&None
|
||||
}
|
||||
|
||||
struct StructRef<'a> {
|
||||
data: &'a Option<&'a u32>,
|
||||
}
|
||||
|
||||
struct StructTupleRef<'a>(u32, &'a Option<&'a u32>);
|
||||
|
||||
enum EnumRef<'a> {
|
||||
Variant1(u32),
|
||||
Variant2(&'a Option<&'a u32>),
|
||||
}
|
||||
|
||||
trait RefOptTrait {
|
||||
type A;
|
||||
fn foo(&self, _: Self::A);
|
||||
}
|
||||
|
||||
impl RefOptTrait for u32 {
|
||||
type A = &'static Option<&'static Self>;
|
||||
|
||||
fn foo(&self, _: Self::A) {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x: &Option<&u32> = &None;
|
||||
|
|
|
|||
|
|
@ -1,22 +1,70 @@
|
|||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:4:22
|
||||
--> $DIR/ref_option_ref.rs:5:23
|
||||
|
|
||||
LL | type OptRefU32<'a> = &'a Option<&'a u32>;
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'a u32>`
|
||||
LL | static REF_THRESHOLD: &Option<&i32> = &Some(&THRESHOLD);
|
||||
| ^^^^^^^^^^^^^ help: try: `Option<&i32>`
|
||||
|
|
||||
= note: `-D clippy::ref-option-ref` implied by `-D warnings`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:5:22
|
||||
--> $DIR/ref_option_ref.rs:7:18
|
||||
|
|
||||
LL | type OptRef<'a, T> = &'a Option<&'a T>;
|
||||
| ^^^^^^^^^^^^^^^^^ help: try: `Option<&'a T>`
|
||||
LL | const REF_CONST: &Option<&i32> = &Some(&CONST_THRESHOLD);
|
||||
| ^^^^^^^^^^^^^ help: try: `Option<&i32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:8:12
|
||||
--> $DIR/ref_option_ref.rs:9:25
|
||||
|
|
||||
LL | type RefOptRefU32<'a> = &'a Option<&'a u32>;
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'a u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:10:25
|
||||
|
|
||||
LL | type RefOptRef<'a, T> = &'a Option<&'a T>;
|
||||
| ^^^^^^^^^^^^^^^^^ help: try: `Option<&'a T>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:12:14
|
||||
|
|
||||
LL | fn foo(data: &Option<&u32>) {}
|
||||
| ^^^^^^^^^^^^^ help: try: `Option<&u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:14:23
|
||||
|
|
||||
LL | fn bar(data: &u32) -> &Option<&u32> {
|
||||
| ^^^^^^^^^^^^^ help: try: `Option<&u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:19:11
|
||||
|
|
||||
LL | data: &'a Option<&'a u32>,
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'a u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:22:32
|
||||
|
|
||||
LL | struct StructTupleRef<'a>(u32, &'a Option<&'a u32>);
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'a u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:26:14
|
||||
|
|
||||
LL | Variant2(&'a Option<&'a u32>),
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'a u32>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:35:14
|
||||
|
|
||||
LL | type A = &'static Option<&'static Self>;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Option<&'static Self>`
|
||||
|
||||
error: since & implements Copy trait, &Option<&T> can be simplifyied into Option<&T>
|
||||
--> $DIR/ref_option_ref.rs:41:12
|
||||
|
|
||||
LL | let x: &Option<&u32> = &None;
|
||||
| ^^^^^^^^^^^^^ help: try: `Option<&u32>`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 11 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue