mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			27 lines
		
	
	
		
			532 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			532 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
// run-pass
 | 
						|
 | 
						|
#![allow(non_upper_case_globals)]
 | 
						|
#![allow(dead_code)]
 | 
						|
// `expr?` expands to:
 | 
						|
//
 | 
						|
// match expr {
 | 
						|
//     Ok(val) => val,
 | 
						|
//     Err(err) => return Err(From::from(err)),
 | 
						|
// }
 | 
						|
//
 | 
						|
// This test verifies that the expansion is hygienic, i.e., it's not affected by other `val` and
 | 
						|
// `err` bindings that may be in scope.
 | 
						|
 | 
						|
use std::num::ParseIntError;
 | 
						|
 | 
						|
fn main() {
 | 
						|
    assert_eq!(parse(), Ok(1));
 | 
						|
}
 | 
						|
 | 
						|
fn parse() -> Result<i32, ParseIntError> {
 | 
						|
    const val: char = 'a';
 | 
						|
    const err: char = 'b';
 | 
						|
 | 
						|
    Ok("1".parse::<i32>()?)
 | 
						|
}
 |