mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ aux-build:test-macros.rs
 | |
| // gate-test-proc_macro_hygiene
 | |
| 
 | |
| #![feature(stmt_expr_attributes)]
 | |
| 
 | |
| #[macro_use]
 | |
| extern crate test_macros;
 | |
| 
 | |
| fn _test_inner() {
 | |
|     #![empty_attr] //~ ERROR: inner macro attributes are unstable
 | |
| }
 | |
| 
 | |
| mod _test2_inner {
 | |
|     #![empty_attr] //~ ERROR: inner macro attributes are unstable
 | |
| }
 | |
| 
 | |
| #[empty_attr = "y"] //~ ERROR: key-value macro attributes are not supported
 | |
| fn _test3() {}
 | |
| 
 | |
| fn attrs() {
 | |
|     // Statement, item
 | |
|     #[empty_attr] // OK
 | |
|     struct S;
 | |
| 
 | |
|     // Statement, macro
 | |
|     #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
 | |
|     println!();
 | |
| 
 | |
|     // Statement, semi
 | |
|     #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
 | |
|     S;
 | |
| 
 | |
|     // Statement, local
 | |
|     #[empty_attr] //~ ERROR: custom attributes cannot be applied to statements
 | |
|     let _x = 2;
 | |
| 
 | |
|     // Expr
 | |
|     let _x = #[identity_attr] 2; //~ ERROR: custom attributes cannot be applied to expressions
 | |
| 
 | |
|     // Opt expr
 | |
|     let _x = [#[identity_attr] 2]; //~ ERROR: custom attributes cannot be applied to expressions
 | |
| 
 | |
|     // Expr macro
 | |
|     let _x = #[identity_attr] println!();
 | |
|     //~^ ERROR: custom attributes cannot be applied to expressions
 | |
| }
 | |
| 
 | |
| fn test_case() {
 | |
|     #![test] //~ ERROR inner macro attributes are unstable
 | |
|              //~| WARN this was previously accepted
 | |
| }
 | |
| 
 | |
| fn main() {}
 | 
