Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 42 additions & 13 deletions src/test/compile-fail-fulldeps/proc-macro/proc-macro-gates.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,17 @@ use foo::*;
#[foo::a] //~ ERROR: paths of length greater than one
fn _test() {}

fn _test_inner() {
#![a] // OK
}

#[a] //~ ERROR: custom attributes cannot be applied to modules
mod _test2 {}

mod _test2_inner {
#![a] //~ ERROR: custom attributes cannot be applied to modules
}

#[a = y] //~ ERROR: must only be followed by a delimiter token
fn _test3() {}

Expand All @@ -36,19 +44,40 @@ fn _test4() {}
#[a () = ] //~ ERROR: must only be followed by a delimiter token
fn _test5() {}

fn main() {
fn attrs() {
// Statement, item
#[a] // OK
struct S;

// Statement, macro
#[a] //~ ERROR: custom attributes cannot be applied to statements
println!();

// Statement, semi
#[a] //~ ERROR: custom attributes cannot be applied to statements
S;

// Statement, local
#[a] //~ ERROR: custom attributes cannot be applied to statements
let _x = 2;
let _x = #[a] 2;
//~^ ERROR: custom attributes cannot be applied to expressions

let _x: m!(u32) = 3;
//~^ ERROR: procedural macros cannot be expanded to types
if let m!(Some(_x)) = Some(3) {
//~^ ERROR: procedural macros cannot be expanded to patterns
}
let _x = m!(3);
//~^ ERROR: procedural macros cannot be expanded to expressions
m!(let _x = 3;);
//~^ ERROR: procedural macros cannot be expanded to statements

// Expr
let _x = #[a] 2; //~ ERROR: custom attributes cannot be applied to expressions

// Opt expr
let _x = [#[a] 2]; //~ ERROR: custom attributes cannot be applied to expressions

// Expr macro
let _x = #[a] println!(); //~ ERROR: custom attributes cannot be applied to expressions
}

fn main() {
let _x: m!(u32) = 3; //~ ERROR: procedural macros cannot be expanded to types
if let m!(Some(_x)) = Some(3) {} //~ ERROR: procedural macros cannot be expanded to patterns

m!(struct S;); //~ ERROR: procedural macros cannot be expanded to statements
m!(let _x = 3;); //~ ERROR: procedural macros cannot be expanded to statements

let _x = m!(3); //~ ERROR: procedural macros cannot be expanded to expressions
let _x = [m!(3)]; //~ ERROR: procedural macros cannot be expanded to expressions
}