Add explicit_auto_deref test for variadic function

This commit is contained in:
Jason Newcomb 2022-06-13 13:09:52 -04:00
parent 15df2289ea
commit 85c1f74fef
3 changed files with 50 additions and 32 deletions

View File

@ -59,6 +59,10 @@ fn f_str_t<T>(_: &str, _: T) {}
fn f_box_t<T>(_: &Box<T>) {}
extern "C" {
fn var(_: u32, ...);
}
fn main() {
let s = String::new();
@ -202,4 +206,9 @@ fn main() {
f_str(&&ref_str); // `needless_borrow` will suggest removing both references
f_str(&ref_str); // `needless_borrow` will suggest removing only one reference
let x = &&40;
unsafe {
var(0, &**x);
}
}

View File

@ -59,6 +59,10 @@ fn f_str_t<T>(_: &str, _: T) {}
fn f_box_t<T>(_: &Box<T>) {}
extern "C" {
fn var(_: u32, ...);
}
fn main() {
let s = String::new();
@ -202,4 +206,9 @@ fn main() {
f_str(&&*ref_str); // `needless_borrow` will suggest removing both references
f_str(&&**ref_str); // `needless_borrow` will suggest removing only one reference
let x = &&40;
unsafe {
var(0, &**x);
}
}

View File

@ -1,5 +1,5 @@
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:65:20
--> $DIR/explicit_auto_deref.rs:69:20
|
LL | let _: &str = &*s;
| ^^ help: try this: `s`
@ -7,187 +7,187 @@ LL | let _: &str = &*s;
= note: `-D clippy::explicit-auto-deref` implied by `-D warnings`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:69:12
--> $DIR/explicit_auto_deref.rs:73:12
|
LL | f_str(&*s);
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:73:14
--> $DIR/explicit_auto_deref.rs:77:14
|
LL | f_str_t(&*s, &*s); // Don't lint second param.
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:76:25
--> $DIR/explicit_auto_deref.rs:80:25
|
LL | let _: &Box<i32> = &**b;
| ^^^ help: try this: `b`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:82:8
--> $DIR/explicit_auto_deref.rs:86:8
|
LL | c(&*s);
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:88:9
--> $DIR/explicit_auto_deref.rs:92:9
|
LL | &**x
| ^^^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:92:11
--> $DIR/explicit_auto_deref.rs:96:11
|
LL | { &**x }
| ^^^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:96:9
--> $DIR/explicit_auto_deref.rs:100:9
|
LL | &**{ x }
| ^^^^^^^^ help: try this: `{ x }`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:100:9
--> $DIR/explicit_auto_deref.rs:104:9
|
LL | &***x
| ^^^^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:117:13
--> $DIR/explicit_auto_deref.rs:121:13
|
LL | f1(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:118:13
--> $DIR/explicit_auto_deref.rs:122:13
|
LL | f2(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:119:13
--> $DIR/explicit_auto_deref.rs:123:13
|
LL | f3(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:120:28
--> $DIR/explicit_auto_deref.rs:124:28
|
LL | f4.callable_str()(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:121:13
--> $DIR/explicit_auto_deref.rs:125:13
|
LL | f5(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:122:13
--> $DIR/explicit_auto_deref.rs:126:13
|
LL | f6(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:123:28
--> $DIR/explicit_auto_deref.rs:127:28
|
LL | f7.callable_str()(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:124:26
--> $DIR/explicit_auto_deref.rs:128:26
|
LL | f8.callable_t()(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:125:13
--> $DIR/explicit_auto_deref.rs:129:13
|
LL | f9(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:126:14
--> $DIR/explicit_auto_deref.rs:130:14
|
LL | f10(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:127:27
--> $DIR/explicit_auto_deref.rs:131:27
|
LL | f11.callable_t()(&*x);
| ^^ help: try this: `x`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:131:17
--> $DIR/explicit_auto_deref.rs:135:17
|
LL | let _ = S1(&*s);
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:136:22
--> $DIR/explicit_auto_deref.rs:140:22
|
LL | let _ = S2 { s: &*s };
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:152:30
--> $DIR/explicit_auto_deref.rs:156:30
|
LL | let _ = Self::S1(&**s);
| ^^^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:153:35
--> $DIR/explicit_auto_deref.rs:157:35
|
LL | let _ = Self::S2 { s: &**s };
| ^^^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:156:21
--> $DIR/explicit_auto_deref.rs:160:21
|
LL | let _ = E1::S1(&*s);
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:157:26
--> $DIR/explicit_auto_deref.rs:161:26
|
LL | let _ = E1::S2 { s: &*s };
| ^^ help: try this: `s`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:175:13
--> $DIR/explicit_auto_deref.rs:179:13
|
LL | let _ = (*b).foo;
| ^^^^ help: try this: `b`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:176:13
--> $DIR/explicit_auto_deref.rs:180:13
|
LL | let _ = (**b).foo;
| ^^^^^ help: try this: `b`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:191:19
--> $DIR/explicit_auto_deref.rs:195:19
|
LL | let _ = f_str(*ref_str);
| ^^^^^^^^ help: try this: `ref_str`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:193:19
--> $DIR/explicit_auto_deref.rs:197:19
|
LL | let _ = f_str(**ref_ref_str);
| ^^^^^^^^^^^^^ help: try this: `ref_ref_str`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:203:13
--> $DIR/explicit_auto_deref.rs:207:13
|
LL | f_str(&&*ref_str); // `needless_borrow` will suggest removing both references
| ^^^^^^^^ help: try this: `ref_str`
error: deref which would be done by auto-deref
--> $DIR/explicit_auto_deref.rs:204:12
--> $DIR/explicit_auto_deref.rs:208:12
|
LL | f_str(&&**ref_str); // `needless_borrow` will suggest removing only one reference
| ^^^^^^^^^^ help: try this: `ref_str`