Basic flow analysis on if statements
[hiphop-php.git] / hphp / test / slow / finally / finally_break_008.php
blob1a1ac7334b8b2ddb605793ebeb232ea9e366e179
1 <?hh
3 function blah() {
4 $xs = varray[11, 22, 33, 44, 55];
5 $ys = varray['a', 'b', 'c', 'd', 'e', 'f'];
6 $zs = varray['x', 'y', 'z'];
8 try {
9 echo "begin try\n";
10 } finally {
11 foreach ($zs as $z) {
12 try {
13 foreach ($ys as $y) {
14 echo "begin outer loop $y\n";
15 try {
16 try {
17 foreach ($xs as $x) {
18 echo "begin inner loop $x\n";
19 if ($x == 22) {
20 echo "continue\n";
21 continue;
23 echo "end inner loop $x\n";
25 } finally {
26 echo "inner finally\n";
28 } finally {
29 echo "outer finally\n";
31 echo "middle outer loop\n";
32 try {
33 $continue_outer_loop = false;
34 foreach ($xs as $x) {
35 try {
36 echo "begin inner loop $x\n";
37 if ($x == 22 || $y == 'b') {
38 echo "continue 2\n";
39 $continue_outer_loop = true;
40 break;
42 if ($x == 33) {
43 echo "break\n";
44 break;
46 if ($y == 'f' || $z == 'y') {
47 echo "throw\n";
48 throw new Exception('ble!');
50 } finally {
51 echo "exception finally\n";
53 echo "end inner loop $x\n";
55 if ($continue_outer_loop) continue;
56 } finally {
57 echo "inner finally 2\n";
60 echo "end outer loop\n";
61 } catch (Exception $e) {
62 echo "catch\n";
63 } finally {
64 echo "outer finally 2\n";
67 echo "final finally\n";
73 <<__EntryPoint>>
74 function main_finally_break_008() {
75 blah();