From 8e6ed1203b777747bb435c7eb11272ccf252cd52 Mon Sep 17 00:00:00 2001 From: "Zack M. Davis" Date: Thu, 12 Oct 2017 00:42:52 -0700 Subject: [PATCH] bolster UI test converage for lint suggestions --- src/test/ui/lint/suggestions.rs | 17 +++++++ src/test/ui/lint/suggestions.stderr | 79 ++++++++++++++++++++++++----- 2 files changed, 84 insertions(+), 12 deletions(-) diff --git a/src/test/ui/lint/suggestions.rs b/src/test/ui/lint/suggestions.rs index 874124a7d365..e078056ab5e0 100644 --- a/src/test/ui/lint/suggestions.rs +++ b/src/test/ui/lint/suggestions.rs @@ -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) {} + +#[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); } } diff --git a/src/test/ui/lint/suggestions.stderr b/src/test/ui/lint/suggestions.stderr index 9a69c52e6cfb..7a498b56413a 100644 --- a/src/test/ui/lint/suggestions.stderr +++ b/src/test/ui/lint/suggestions.stderr @@ -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) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = 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 +