]>
git.proxmox.com Git - rustc.git/blob - tests/ui/try-block/try-block.rs
3 #![allow(non_camel_case_types)]
5 // compile-flags: --edition 2018
7 #![feature(try_blocks)]
12 let catch_result
: Option
<_
> = try
{
16 assert_eq
!(catch_result
, Some(5));
19 while catch { catch = false; }
20 assert_eq
!(catch, false);
22 catch = if catch { false }
else { true }
;
23 assert_eq
!(catch, true);
29 let catch_err
: Result
<_
, i32> = try
{
33 assert_eq
!(catch_err
, Err(22));
35 let catch_okay
: Result
<i32, i32> = try
{
36 if false { Err(25)?; }
40 assert_eq
!(catch_okay
, Ok(28));
42 let catch_from_loop
: Result
<i32, i32> = try
{
44 if i
< 5 { Ok::<i32, i32>(i)?; }
else { Err(i)?; }
48 assert_eq
!(catch_from_loop
, Err(5));
51 let _res
: Result
<(), ()> = try
{
54 assert_eq
!(cfg_init
, 5);
57 let _res
: Result
<(), ()> = try
{
61 assert_eq
!(cfg_init_2
, 6);
63 let my_string
= "test".to_string();
64 let res
: Result
<&str, ()> = try
{
65 // Unfortunately, deref doesn't fire here (#49356)
68 assert_eq
!(res
, Ok("test"));
70 let my_opt
: Option
<_
> = try { () }
;
71 assert_eq
!(my_opt
, Some(()));
73 let my_opt
: Option
<_
> = try { }
;
74 assert_eq
!(my_opt
, Some(()));