Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a few more tests for proc macro feature gating #50325

Merged
merged 1 commit into from
Apr 30, 2018
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
}