45 lines
1.8 KiB
Rust
45 lines
1.8 KiB
Rust
//@ compile-flags: --crate-type rlib
|
|
// Tests all the kinds of errors when EII attributes are used with wrong syntax.
|
|
#![feature(extern_item_impls)]
|
|
#![feature(decl_macro)]
|
|
#![feature(rustc_attrs)]
|
|
#![feature(eii_internals)]
|
|
|
|
#[eii_declaration(bar)] //~ ERROR `#[eii_declaration(...)]` is only valid on macros
|
|
fn hello() {
|
|
#[eii_declaration(bar)] //~ ERROR `#[eii_declaration(...)]` is only valid on macros
|
|
let x = 3 + 3;
|
|
}
|
|
|
|
#[eii_declaration] //~ ERROR `#[eii_declaration(...)]` expects a list of one or two elements
|
|
#[eii_declaration()] //~ ERROR `#[eii_declaration(...)]` expects a list of one or two elements
|
|
#[eii_declaration(bar, hello)] //~ ERROR expected this argument to be "unsafe"
|
|
#[eii_declaration(bar, "unsafe", hello)] //~ ERROR `#[eii_declaration(...)]` expects a list of one or two elements
|
|
#[eii_declaration(bar, hello, "unsafe")] //~ ERROR `#[eii_declaration(...)]` expects a list of one or two elements
|
|
#[eii_declaration = "unsafe"] //~ ERROR `#[eii_declaration(...)]` expects a list of one or two elements
|
|
#[eii_declaration(bar)]
|
|
#[rustc_builtin_macro(eii_shared_macro)]
|
|
macro foo() {}
|
|
|
|
unsafe extern "Rust" {
|
|
safe fn bar(x: u64) -> u64;
|
|
}
|
|
|
|
#[foo] //~ ERROR `#[foo]` is only valid on functions
|
|
static X: u64 = 4;
|
|
#[foo] //~ ERROR `#[foo]` is only valid on functions
|
|
const Y: u64 = 4;
|
|
#[foo] //~ ERROR `#[foo]` is only valid on functions
|
|
macro bar() {}
|
|
|
|
#[foo()]
|
|
//~^ ERROR `#[foo]` expected no arguments or a single argument: `#[foo(default)]`
|
|
#[foo(default, bar)]
|
|
//~^ ERROR `#[foo]` expected no arguments or a single argument: `#[foo(default)]`
|
|
#[foo("default")]
|
|
//~^ ERROR `#[foo]` expected no arguments or a single argument: `#[foo(default)]`
|
|
#[foo = "default"]
|
|
//~^ ERROR `#[foo]` expected no arguments or a single argument: `#[foo(default)]`
|
|
fn other(x: u64) -> u64 {
|
|
x
|
|
}
|