Auto merge of #45232 - zackmdavis:moar_lint_suggestions, r=estebank
code suggestions for non-shorthand field pattern, no-mangle lints continuing in the spirit of #44942  r? @estebank
This commit is contained in:
commit
e3fb84e951
6 changed files with 142 additions and 37 deletions
|
|
@ -424,7 +424,7 @@ mod no_mangle {
|
|||
mod inner { #![no_mangle="3500"] }
|
||||
|
||||
#[no_mangle = "3500"] fn f() { }
|
||||
//~^ WARN function f is marked #[no_mangle], but not exported
|
||||
//~^ WARN function is marked #[no_mangle], but not exported
|
||||
|
||||
#[no_mangle = "3500"] struct S;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,8 @@
|
|||
|
||||
// compile-flags:-F private_no_mangle_fns -F no_mangle_const_items -F private_no_mangle_statics
|
||||
|
||||
// FIXME(#19495) no_mangle'ing main ICE's.
|
||||
#[no_mangle]
|
||||
fn foo() { //~ ERROR function foo is marked #[no_mangle], but not exported
|
||||
fn foo() { //~ ERROR function is marked #[no_mangle], but not exported
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
|
@ -31,7 +30,7 @@ pub static BAR: u64 = 1;
|
|||
|
||||
#[allow(dead_code)]
|
||||
#[no_mangle]
|
||||
static PRIVATE_BAR: u64 = 1; //~ ERROR static PRIVATE_BAR is marked #[no_mangle], but not exported
|
||||
static PRIVATE_BAR: u64 = 1; //~ ERROR static is marked #[no_mangle], but not exported
|
||||
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -11,10 +11,27 @@
|
|||
#![warn(unused_mut)] // UI tests pass `-A unused`—see Issue #43896
|
||||
#![feature(no_debug)]
|
||||
|
||||
#[no_mangle] static SHENZHOU: usize = 1; // should suggest `pub`
|
||||
#[no_mangle] const DISCOVERY: usize = 1; // should suggest `pub static` rather than `const`
|
||||
|
||||
#[no_mangle] // should suggest removal (generics can't be no-mangle)
|
||||
pub fn defiant<T>(_t: T) {}
|
||||
|
||||
#[no_mangle]
|
||||
fn rio_grande() {} // should suggest `pub`
|
||||
|
||||
struct Equinox {
|
||||
warp_factor: f32,
|
||||
}
|
||||
|
||||
#[no_debug] // should suggest removal of deprecated attribute
|
||||
fn main() {
|
||||
while true { // should suggest `loop`
|
||||
let mut a = (1); // should suggest no `mut`, no parens
|
||||
let d = Equinox { warp_factor: 9.975 };
|
||||
match d {
|
||||
Equinox { warp_factor: warp_factor } => {} // should suggest shorthand
|
||||
}
|
||||
println!("{}", a);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,23 @@
|
|||
warning: unnecessary parentheses around assigned value
|
||||
--> $DIR/suggestions.rs:17:21
|
||||
--> $DIR/suggestions.rs:30:21
|
||||
|
|
||||
17 | let mut a = (1); // should suggest no `mut`, no parens
|
||||
30 | let mut a = (1); // should suggest no `mut`, no parens
|
||||
| ^^^ help: remove these parentheses
|
||||
|
|
||||
= note: #[warn(unused_parens)] on by default
|
||||
|
||||
warning: use of deprecated attribute `no_debug`: the `#[no_debug]` attribute was an experimental feature that has been deprecated due to lack of demand. See https://github.com/rust-lang/rust/issues/29721
|
||||
--> $DIR/suggestions.rs:14:1
|
||||
--> $DIR/suggestions.rs:27:1
|
||||
|
|
||||
14 | #[no_debug] // should suggest removal of deprecated attribute
|
||||
27 | #[no_debug] // should suggest removal of deprecated attribute
|
||||
| ^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: #[warn(deprecated)] on by default
|
||||
|
||||
warning: variable does not need to be mutable
|
||||
--> $DIR/suggestions.rs:17:13
|
||||
--> $DIR/suggestions.rs:30:13
|
||||
|
|
||||
17 | let mut a = (1); // should suggest no `mut`, no parens
|
||||
30 | let mut a = (1); // should suggest no `mut`, no parens
|
||||
| ---^^
|
||||
| |
|
||||
| help: remove this `mut`
|
||||
|
|
@ -28,18 +28,73 @@ note: lint level defined here
|
|||
11 | #![warn(unused_mut)] // UI tests pass `-A unused`—see Issue #43896
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: denote infinite loops with `loop { ... }`
|
||||
--> $DIR/suggestions.rs:16:5
|
||||
warning: static is marked #[no_mangle], but not exported
|
||||
--> $DIR/suggestions.rs:14:14
|
||||
|
|
||||
16 | while true { // should suggest `loop`
|
||||
14 | #[no_mangle] static SHENZHOU: usize = 1; // should suggest `pub`
|
||||
| -^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| help: try making it public: `pub `
|
||||
|
|
||||
= note: #[warn(private_no_mangle_statics)] on by default
|
||||
|
||||
error: const items should never be #[no_mangle]
|
||||
--> $DIR/suggestions.rs:15:14
|
||||
|
|
||||
15 | #[no_mangle] const DISCOVERY: usize = 1; // should suggest `pub static` rather than `const`
|
||||
| -----^^^^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| help: try a static value: `pub static`
|
||||
|
|
||||
= note: #[deny(no_mangle_const_items)] on by default
|
||||
|
||||
warning: functions generic over types must be mangled
|
||||
--> $DIR/suggestions.rs:18:1
|
||||
|
|
||||
17 | #[no_mangle] // should suggest removal (generics can't be no-mangle)
|
||||
| ------------ help: remove this attribute
|
||||
18 | pub fn defiant<T>(_t: T) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: #[warn(no_mangle_generic_items)] on by default
|
||||
|
||||
warning: function is marked #[no_mangle], but not exported
|
||||
--> $DIR/suggestions.rs:21:1
|
||||
|
|
||||
21 | fn rio_grande() {} // should suggest `pub`
|
||||
| -^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| help: try making it public: `pub `
|
||||
|
|
||||
= note: #[warn(private_no_mangle_fns)] on by default
|
||||
|
||||
warning: denote infinite loops with `loop { ... }`
|
||||
--> $DIR/suggestions.rs:29:5
|
||||
|
|
||||
29 | while true { // should suggest `loop`
|
||||
| ^---------
|
||||
| |
|
||||
| _____help: use `loop`
|
||||
| |
|
||||
17 | | let mut a = (1); // should suggest no `mut`, no parens
|
||||
18 | | println!("{}", a);
|
||||
19 | | }
|
||||
30 | | let mut a = (1); // should suggest no `mut`, no parens
|
||||
31 | | let d = Equinox { warp_factor: 9.975 };
|
||||
32 | | match d {
|
||||
... |
|
||||
35 | | println!("{}", a);
|
||||
36 | | }
|
||||
| |_____^
|
||||
|
|
||||
= note: #[warn(while_true)] on by default
|
||||
|
||||
warning: the `warp_factor:` in this pattern is redundant
|
||||
--> $DIR/suggestions.rs:33:23
|
||||
|
|
||||
33 | Equinox { warp_factor: warp_factor } => {} // should suggest shorthand
|
||||
| ------------^^^^^^^^^^^^
|
||||
| |
|
||||
| help: remove this
|
||||
|
|
||||
= note: #[warn(non_shorthand_field_patterns)] on by default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue