]> git.lizzy.rs Git - rust.git/blob - tests/debuginfo/unreachable-locals.rs
Merge commit '7d53619064ab7045c383644cb445052d2a3d46db' into sync_cg_clif-2023-02-09
[rust.git] / tests / debuginfo / unreachable-locals.rs
1 // min-lldb-version: 310
2
3 // compile-flags:-g
4
5 #![allow(unused_variables)]
6 #![feature(omit_gdb_pretty_printer_section)]
7 #![omit_gdb_pretty_printer_section]
8
9 // No need to actually run the debugger, just make sure that the compiler can
10 // handle locals in unreachable code.
11
12 fn after_return() {
13     return;
14     let x = "0";
15     let (ref y,z) = (1i32, 2u32);
16     match (20i32, 'c') {
17         (a, ref b) => {}
18     }
19     for a in &[111i32] {}
20     let test = if some_predicate() { 1 } else { 2 };
21     while some_predicate() {
22         let abc = !some_predicate();
23     }
24     loop {
25         let abc = !some_predicate();
26         break;
27     }
28     // nested block
29     {
30         let abc = !some_predicate();
31
32         {
33             let def = !some_predicate();
34         }
35     }
36 }
37
38 fn after_panic() {
39     panic!();
40     let x = "0";
41     let (ref y,z) = (1i32, 2u32);
42     match (20i32, 'c') {
43         (a, ref b) => {}
44     }
45     for a in &[111i32] {}
46     let test = if some_predicate() { 1 } else { 2 };
47     while some_predicate() {
48         let abc = !some_predicate();
49     }
50     loop {
51         let abc = !some_predicate();
52         break;
53     }
54     // nested block
55     {
56         let abc = !some_predicate();
57
58         {
59             let def = !some_predicate();
60         }
61     }
62 }
63
64 fn after_diverging_function() {
65     diverge();
66     let x = "0";
67     let (ref y,z) = (1i32, 2u32);
68     match (20i32, 'c') {
69         (a, ref b) => {}
70     }
71     for a in &[111i32] {}
72     let test = if some_predicate() { 1 } else { 2 };
73     while some_predicate() {
74         let abc = !some_predicate();
75     }
76     loop {
77         let abc = !some_predicate();
78         break;
79     }
80     // nested block
81     {
82         let abc = !some_predicate();
83
84         {
85             let def = !some_predicate();
86         }
87     }
88 }
89
90 fn after_break() {
91     loop {
92         break;
93         let x = "0";
94         let (ref y,z) = (1i32, 2u32);
95         match (20i32, 'c') {
96             (a, ref b) => {}
97         }
98         for a in &[111i32] {}
99         let test = if some_predicate() { 1 } else { 2 };
100         while some_predicate() {
101             let abc = !some_predicate();
102         }
103         loop {
104             let abc = !some_predicate();
105             break;
106         }
107         // nested block
108         {
109             let abc = !some_predicate();
110
111             {
112                 let def = !some_predicate();
113             }
114         }
115     }
116 }
117
118 fn after_continue() {
119     for _ in 0..10i32 {
120         continue;
121         let x = "0";
122         let (ref y,z) = (1i32, 2u32);
123         match (20i32, 'c') {
124             (a, ref b) => {}
125         }
126         for a in &[111i32] {}
127         let test = if some_predicate() { 1 } else { 2 };
128         while some_predicate() {
129             let abc = !some_predicate();
130         }
131         loop {
132             let abc = !some_predicate();
133             break;
134         }
135         // nested block
136         {
137             let abc = !some_predicate();
138
139             {
140                 let def = !some_predicate();
141             }
142         }
143     }
144 }
145
146 fn main() {
147     after_return();
148     after_panic();
149     after_diverging_function();
150     after_break();
151     after_continue();
152 }
153
154 fn diverge() -> ! {
155     panic!();
156 }
157
158 fn some_predicate() -> bool { true || false }