From e05c2f80da3bf538c045d0682426a25b1c4b862b Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Thu, 5 Mar 2015 10:46:45 +0100 Subject: trans: Add early-out when translating unreachable controlflow expressions. --- src/test/debuginfo/unreachable-locals.rs | 85 +++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) (limited to 'src/test/debuginfo') diff --git a/src/test/debuginfo/unreachable-locals.rs b/src/test/debuginfo/unreachable-locals.rs index 309848d6ced..63536b13834 100644 --- a/src/test/debuginfo/unreachable-locals.rs +++ b/src/test/debuginfo/unreachable-locals.rs @@ -26,6 +26,22 @@ fn after_return() { (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() { @@ -36,6 +52,22 @@ fn after_panic() { (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() { @@ -46,6 +78,22 @@ fn after_diverging_function() { (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() { @@ -57,18 +105,50 @@ fn after_break() { (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 { - break; + 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(); + } + } } } @@ -83,3 +163,6 @@ fn main() { fn diverge() -> ! { panic!(); } + +fn some_predicate() -> bool { true || false } + -- cgit 1.4.1-3-g733a5