| // Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT |
| // file at the top-level directory of this distribution and at |
| // http://rust-lang.org/COPYRIGHT. |
| // |
| // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
| // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your |
| // option. This file may not be copied, modified, or distributed |
| // except according to those terms. |
| |
| // min-lldb-version: 310 |
| |
| // compile-flags:-g |
| |
| #![allow(unused_variables)] |
| #![feature(omit_gdb_pretty_printer_section)] |
| #![omit_gdb_pretty_printer_section] |
| |
| // No need to actually run the debugger, just make sure that the compiler can |
| // handle locals in unreachable code. |
| |
| fn after_return() { |
| return; |
| let x = "0"; |
| let (ref y,z) = (1i32, 2u32); |
| match (20i32, 'c') { |
| (a, ref b) => {} |
| } |
| for a in &[111i32] {} |
| let test = if some_predicate() { 1 } else { 2 }; |
| while some_predicate() { |
| let abc = !some_predicate(); |
| } |
| loop { |
| let abc = !some_predicate(); |
| break; |
| } |
| // nested block |
| { |
| let abc = !some_predicate(); |
| |
| { |
| let def = !some_predicate(); |
| } |
| } |
| } |
| |
| fn after_panic() { |
| panic!(); |
| let x = "0"; |
| let (ref y,z) = (1i32, 2u32); |
| match (20i32, 'c') { |
| (a, ref b) => {} |
| } |
| for a in &[111i32] {} |
| let test = if some_predicate() { 1 } else { 2 }; |
| while some_predicate() { |
| let abc = !some_predicate(); |
| } |
| loop { |
| let abc = !some_predicate(); |
| break; |
| } |
| // nested block |
| { |
| let abc = !some_predicate(); |
| |
| { |
| let def = !some_predicate(); |
| } |
| } |
| } |
| |
| fn after_diverging_function() { |
| diverge(); |
| let x = "0"; |
| let (ref y,z) = (1i32, 2u32); |
| match (20i32, 'c') { |
| (a, ref b) => {} |
| } |
| for a in &[111i32] {} |
| let test = if some_predicate() { 1 } else { 2 }; |
| while some_predicate() { |
| let abc = !some_predicate(); |
| } |
| loop { |
| let abc = !some_predicate(); |
| break; |
| } |
| // nested block |
| { |
| let abc = !some_predicate(); |
| |
| { |
| let def = !some_predicate(); |
| } |
| } |
| } |
| |
| fn after_break() { |
| loop { |
| break; |
| let x = "0"; |
| let (ref y,z) = (1i32, 2u32); |
| match (20i32, 'c') { |
| (a, ref b) => {} |
| } |
| for a in &[111i32] {} |
| let test = if some_predicate() { 1 } else { 2 }; |
| while some_predicate() { |
| let abc = !some_predicate(); |
| } |
| loop { |
| let abc = !some_predicate(); |
| break; |
| } |
| // nested block |
| { |
| let abc = !some_predicate(); |
| |
| { |
| let def = !some_predicate(); |
| } |
| } |
| } |
| } |
| |
| fn after_continue() { |
| for _ in 0..10i32 { |
| continue; |
| let x = "0"; |
| let (ref y,z) = (1i32, 2u32); |
| match (20i32, 'c') { |
| (a, ref b) => {} |
| } |
| for a in &[111i32] {} |
| let test = if some_predicate() { 1 } else { 2 }; |
| while some_predicate() { |
| let abc = !some_predicate(); |
| } |
| loop { |
| let abc = !some_predicate(); |
| break; |
| } |
| // nested block |
| { |
| let abc = !some_predicate(); |
| |
| { |
| let def = !some_predicate(); |
| } |
| } |
| } |
| } |
| |
| fn main() { |
| after_return(); |
| after_panic(); |
| after_diverging_function(); |
| after_break(); |
| after_continue(); |
| } |
| |
| fn diverge() -> ! { |
| panic!(); |
| } |
| |
| fn some_predicate() -> bool { true || false } |
| |