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