| //@ run-rustfix | 
 |  | 
 | #![allow(dead_code, path_statements)] | 
 | #![deny(unused_attributes, unused_must_use)] | 
 | #![feature(asm_experimental_arch, stmt_expr_attributes, trait_alias)] | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | extern crate std as std2; | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | mod test_mod {} | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | use std::arch::global_asm; | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | const CONST: usize = 4; | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | #[no_mangle] | 
 | static STATIC: usize = 4; | 
 |  | 
 | #[must_use] | 
 | struct X; | 
 |  | 
 | #[must_use] | 
 | enum Y { | 
 |     Z, | 
 | } | 
 |  | 
 | #[must_use] | 
 | union U { | 
 |     unit: (), | 
 | } | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | impl U { | 
 |     #[must_use] | 
 |     fn method() -> i32 { | 
 |         4 | 
 |     } | 
 | } | 
 |  | 
 | #[must_use] | 
 | #[no_mangle] | 
 | fn foo() -> i64 { | 
 |     4 | 
 | } | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | extern "Rust" { | 
 |     #[link_name = "STATIC"] | 
 |     #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     static FOREIGN_STATIC: usize; | 
 |  | 
 |     #[link_name = "foo"] | 
 |     #[must_use] | 
 |     fn foreign_foo() -> i64; | 
 | } | 
 |  | 
 | #[must_use] | 
 | //~^ ERROR `#[must_use]` attribute cannot be used on macro calls | 
 | //~| WARN this was previously accepted by the compiler but is being phased out | 
 | global_asm!(""); | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | type UseMe = (); | 
 |  | 
 | fn qux<#[must_use] T>(_: T) {} //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 |  | 
 | #[must_use] | 
 | trait Use { | 
 |     #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     const ASSOC_CONST: usize = 4; | 
 |     #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     type AssocTy; | 
 |  | 
 |     #[must_use] | 
 |     fn get_four(&self) -> usize { | 
 |         4 | 
 |     } | 
 | } | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | impl Use for () { | 
 |     type AssocTy = (); | 
 |  | 
 |     #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     fn get_four(&self) -> usize { | 
 |         4 | 
 |     } | 
 | } | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | trait Alias = Use; | 
 |  | 
 | #[must_use] //~ ERROR attribute cannot be used on | 
 | //~| WARN previously accepted | 
 | macro_rules! cool_macro { | 
 |     () => { | 
 |         4 | 
 |     }; | 
 | } | 
 |  | 
 | fn main() { | 
 |     #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     let x = || {}; | 
 |     x(); | 
 |  | 
 |     let x = #[must_use] //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     || {}; | 
 |     x(); | 
 |  | 
 |     X; //~ ERROR that must be used | 
 |     Y::Z; //~ ERROR that must be used | 
 |     U { unit: () }; //~ ERROR that must be used | 
 |     U::method(); //~ ERROR that must be used | 
 |     foo(); //~ ERROR that must be used | 
 |  | 
 |     unsafe { | 
 |         foreign_foo(); //~ ERROR that must be used | 
 |     }; | 
 |  | 
 |     CONST; | 
 |     STATIC; | 
 |     unsafe { FOREIGN_STATIC }; | 
 |     cool_macro!(); | 
 |     qux(4); | 
 |     ().get_four(); //~ ERROR that must be used | 
 |  | 
 |     match Some(4) { | 
 |         #[must_use] //~ ERROR attribute cannot be used on | 
 |         //~| WARN previously accepted | 
 |         Some(res) => res, | 
 |         None => 0, | 
 |     }; | 
 |  | 
 |     struct PatternField { | 
 |         foo: i32, | 
 |     } | 
 |     let s = PatternField { #[must_use]  foo: 123 }; //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     let PatternField { #[must_use] foo } = s; //~ ERROR attribute cannot be used on | 
 |     //~| WARN previously accepted | 
 |     let _ = foo; | 
 | } |