mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 95ff642797
			
		
	
	
		95ff642797
		
	
	
	
	
		
			
			Done with ```bash sd '//@ pretty-expanded.*\n' '' tests/ui/**/*.rs ``` and ``` sd '//@pretty-expanded.*\n' '' tests/ui/**/*.rs ```
		
			
				
	
	
		
			30 lines
		
	
	
		
			609 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			609 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | |
| #![allow(dead_code)]
 | |
| // after fixing #9384 and implementing hygiene for match bindings,
 | |
| // this now fails because the insertion of the 'y' into the match
 | |
| // doesn't cause capture. Making this macro hygienic (as I've done)
 | |
| // could very well make this test case completely pointless....
 | |
| 
 | |
| 
 | |
| enum T {
 | |
|     A(isize),
 | |
|     B(usize)
 | |
| }
 | |
| 
 | |
| macro_rules! test {
 | |
|     ($id:ident, $e:expr) => (
 | |
|         fn foo(t: T) -> isize {
 | |
|             match t {
 | |
|                 T::A($id) => $e,
 | |
|                 T::B($id) => $e
 | |
|             }
 | |
|         }
 | |
|     )
 | |
| }
 | |
| 
 | |
| test!(y, 10 + (y as isize));
 | |
| 
 | |
| pub fn main() {
 | |
|     foo(T::A(20));
 | |
| }
 |