diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/try-operator.rs | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/try-operator.rs')
-rw-r--r-- | src/test/ui/try-operator.rs | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/src/test/ui/try-operator.rs b/src/test/ui/try-operator.rs deleted file mode 100644 index 516ae4c40..000000000 --- a/src/test/ui/try-operator.rs +++ /dev/null @@ -1,192 +0,0 @@ -// run-pass - -#![allow(dead_code)] - -use std::fs::File; -use std::io::{Read, self}; -use std::num::ParseIntError; -use std::str::FromStr; - -fn on_method() -> Result<i32, ParseIntError> { - Ok("1".parse::<i32>()? + "2".parse::<i32>()?) -} - -fn in_chain() -> Result<String, ParseIntError> { - Ok("3".parse::<i32>()?.to_string()) -} - -fn on_call() -> Result<i32, ParseIntError> { - fn parse<T: FromStr>(s: &str) -> Result<T, T::Err> { - s.parse() - } - - Ok(parse("4")?) -} - -fn nested() -> Result<i32, ParseIntError> { - Ok("5".parse::<i32>()?.to_string().parse()?) -} - -fn on_path() -> Result<i32, ParseIntError> { - let x = "6".parse::<i32>(); - - Ok(x?) -} - -fn on_macro() -> Result<i32, ParseIntError> { - macro_rules! id { - ($e:expr) => { $e } - } - - Ok(id!("7".parse::<i32>())?) -} - -fn on_parens() -> Result<i32, ParseIntError> { - let x = "8".parse::<i32>(); - - Ok((x)?) -} - -fn on_block() -> Result<i32, ParseIntError> { - let x = "9".parse::<i32>(); - - Ok({x}?) -} - -fn on_field() -> Result<i32, ParseIntError> { - struct Pair<A, B> { a: A, b: B } - - let x = Pair { a: "10".parse::<i32>(), b: 0 }; - - Ok(x.a?) -} - -fn on_tuple_field() -> Result<i32, ParseIntError> { - let x = ("11".parse::<i32>(), 0); - - Ok(x.0?) -} - -fn on_try() -> Result<i32, ParseIntError> { - let x = "12".parse::<i32>().map(|i| i.to_string().parse::<i32>()); - - Ok(x??) -} - -fn on_binary_op() -> Result<i32, ParseIntError> { - let x = 13 - "14".parse::<i32>()?; - let y = "15".parse::<i32>()? - 16; - let z = "17".parse::<i32>()? - "18".parse::<i32>()?; - - Ok(x + y + z) -} - -fn on_index() -> Result<i32, ParseIntError> { - let x = [19]; - let y = "0".parse::<usize>(); - - Ok(x[y?]) -} - -fn on_args() -> Result<i32, ParseIntError> { - fn sub(x: i32, y: i32) -> i32 { x - y } - - let x = "20".parse(); - let y = "21".parse(); - - Ok(sub(x?, y?)) -} - -fn on_if() -> Result<i32, ParseIntError> { - Ok(if true { - "22".parse::<i32>() - } else { - "23".parse::<i32>() - }?) -} - -fn on_if_let() -> Result<i32, ParseIntError> { - Ok(if let Ok(..) = "24".parse::<i32>() { - "25".parse::<i32>() - } else { - "26".parse::<i32>() - }?) -} - -fn on_match() -> Result<i32, ParseIntError> { - Ok(match "27".parse::<i32>() { - Err(..) => "28".parse::<i32>(), - Ok(..) => "29".parse::<i32>(), - }?) -} - -fn tight_binding() -> Result<bool, ()> { - fn ok<T>(x: T) -> Result<T, ()> { Ok(x) } - - let x = ok(true); - Ok(!x?) -} - -// just type check -fn merge_error() -> Result<i32, Error> { - let mut s = String::new(); - - File::open("foo.txt")?.read_to_string(&mut s)?; - - Ok(s.parse::<i32>()? + 1) -} - -fn main() { - assert_eq!(Ok(3), on_method()); - - assert_eq!(Ok("3".to_string()), in_chain()); - - assert_eq!(Ok(4), on_call()); - - assert_eq!(Ok(5), nested()); - - assert_eq!(Ok(6), on_path()); - - assert_eq!(Ok(7), on_macro()); - - assert_eq!(Ok(8), on_parens()); - - assert_eq!(Ok(9), on_block()); - - assert_eq!(Ok(10), on_field()); - - assert_eq!(Ok(11), on_tuple_field()); - - assert_eq!(Ok(12), on_try()); - - assert_eq!(Ok(-3), on_binary_op()); - - assert_eq!(Ok(19), on_index()); - - assert_eq!(Ok(-1), on_args()); - - assert_eq!(Ok(22), on_if()); - - assert_eq!(Ok(25), on_if_let()); - - assert_eq!(Ok(29), on_match()); - - assert_eq!(Ok(false), tight_binding()); -} - -enum Error { - Io(io::Error), - Parse(ParseIntError), -} - -impl From<io::Error> for Error { - fn from(e: io::Error) -> Error { - Error::Io(e) - } -} - -impl From<ParseIntError> for Error { - fn from(e: ParseIntError) -> Error { - Error::Parse(e) - } -} |