mirror of
				https://git.proxmox.com/git/rustc
				synced 2025-11-04 10:42:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			27 lines
		
	
	
		
			644 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			644 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// Check that we are refusing to match on complex nonterminals for which tokens are
 | 
						|
// unavailable and we'd have to go through AST comparisons.
 | 
						|
 | 
						|
#![feature(decl_macro)]
 | 
						|
 | 
						|
macro simple_nonterminal($nt_ident: ident, $nt_lifetime: lifetime, $nt_tt: tt) {
 | 
						|
    macro n(a $nt_ident b $nt_lifetime c $nt_tt d) {
 | 
						|
        struct S;
 | 
						|
    }
 | 
						|
 | 
						|
    n!(a $nt_ident b $nt_lifetime c $nt_tt d);
 | 
						|
}
 | 
						|
 | 
						|
macro complex_nonterminal($nt_item: item) {
 | 
						|
    macro n(a $nt_item b) {
 | 
						|
        struct S;
 | 
						|
    }
 | 
						|
 | 
						|
    n!(a $nt_item b); //~ ERROR no rules expected the token `enum E {}`
 | 
						|
}
 | 
						|
 | 
						|
simple_nonterminal!(a, 'a, (x, y, z)); // OK
 | 
						|
 | 
						|
complex_nonterminal!(enum E {});
 | 
						|
 | 
						|
fn main() {}
 |