mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			598 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			598 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | |
| #![allow(non_upper_case_globals)]
 | |
| // just to make sure that `return` is only returning from the closure,
 | |
| // not the surrounding function.
 | |
| 
 | |
| static mut calls: usize = 0;
 | |
| 
 | |
| fn surrounding() {
 | |
|     let return_works = |n: isize| {
 | |
|         unsafe { calls += 1 }
 | |
| 
 | |
|         if n >= 0 { return; }
 | |
|         panic!()
 | |
|     };
 | |
| 
 | |
|     return_works(10);
 | |
|     return_works(20);
 | |
| 
 | |
|     let return_works_proc = |n: isize| {
 | |
|         unsafe { calls += 1 }
 | |
| 
 | |
|         if n >= 0 { return; }
 | |
|         panic!()
 | |
|     };
 | |
| 
 | |
|     return_works_proc(10);
 | |
| }
 | |
| 
 | |
| pub fn main() {
 | |
|     surrounding();
 | |
| 
 | |
|     assert_eq!(unsafe {calls}, 3);
 | |
| }
 | 
