3 #![allow(unreachable_code)]
4 #![feature(never_type)]
14 let value = 'outer: loop {
18 let _never: ! = loop {
20 break 'outer panic!();
25 assert_eq!(value, 13);
30 let coerced: &[_] = loop {
38 assert_eq!(coerced, &[17u32]);
40 let trait_unified = loop {
42 break Default::default()
47 assert_eq!(trait_unified, [0, 0]);
49 let trait_unified_2 = loop {
51 break [String::from("Hello")]
53 break Default::default()
56 assert_eq!(trait_unified_2, [""]);
58 let trait_unified_3 = loop {
60 break [String::from("Hello")]
65 assert_eq!(trait_unified_3, ["Yes"]);
67 let regular_break = loop {
71 break break Default::default();
74 assert_eq!(regular_break, ());
76 let regular_break_2 = loop {
78 break Default::default();
83 assert_eq!(regular_break_2, ());
85 let regular_break_3 = loop {
92 assert_eq!(regular_break_3, ());
94 let regular_break_4 = loop {
98 assert_eq!(regular_break_4, ());
100 let regular_break_5 = loop {
104 assert_eq!(regular_break_5, ());
106 let nested_break_value = 'outer2: loop {
107 let _a: u32 = 'inner: loop {
109 break 'outer2 "hello";
116 assert_eq!(nested_break_value, "hello");
118 let break_from_while_cond = loop {
119 'inner_loop: while break 'inner_loop {
124 assert_eq!(break_from_while_cond, 123);
126 let break_from_while_to_outer = 'outer_loop: loop {
127 while break 'outer_loop 567 {
128 panic!("from_inner");
130 panic!("from outer");
132 assert_eq!(break_from_while_to_outer, 567);