1 // run-pass 2 3 #![allow(non_upper_case_globals)] 4 #![allow(dead_code)] 5 // `expr?` expands to: 6 // 7 // match expr { 8 // Ok(val) => val, 9 // Err(err) => return Err(From::from(err)), 10 // } 11 // 12 // This test verifies that the expansion is hygienic, i.e., it's not affected by other `val` and 13 // `err` bindings that may be in scope. 14 15 use std::num::ParseIntError; 16 main()17fn main() { 18 assert_eq!(parse(), Ok(1)); 19 } 20 parse() -> Result<i32, ParseIntError>21fn parse() -> Result<i32, ParseIntError> { 22 const val: char = 'a'; 23 const err: char = 'b'; 24 25 Ok("1".parse::<i32>()?) 26 } 27