//@ 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; }