]> granicus.if.org Git - php/commitdiff
Added tests
authorDmitry Stogov <dmitry@zend.com>
Mon, 9 Nov 2015 20:54:09 +0000 (23:54 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 9 Nov 2015 20:54:09 +0000 (23:54 +0300)
Zend/tests/try/try_finally_019.phpt [new file with mode: 0644]
Zend/tests/try/try_finally_020.phpt [new file with mode: 0644]

diff --git a/Zend/tests/try/try_finally_019.phpt b/Zend/tests/try/try_finally_019.phpt
new file mode 100644 (file)
index 0000000..2e2069d
--- /dev/null
@@ -0,0 +1,40 @@
+--TEST--
+Combination of foreach, finally and goto (call order)
+--FILE--
+<?php
+class A {
+       public $n = 0;
+       function __construct($n) {
+               $this->n = $n;
+       }
+       function __destruct() {
+               echo "destruct" . $this->n . "\n";
+       }
+}
+
+foreach ([new A(1)] as $a) {
+    $a = null;
+    try {
+        foreach ([new A(2)] as $a) {
+            $a = null;
+            try {
+                foreach ([new A(3)] as $a) {
+                    $a = null;
+                    goto out;
+                }
+            } finally {
+                echo "finally1\n";
+            }
+out: ;
+        }
+    } finally {
+        echo "finally2\n";
+    }
+}
+?>
+--EXPECT--
+destruct3
+finally1
+destruct2
+finally2
+destruct1
diff --git a/Zend/tests/try/try_finally_020.phpt b/Zend/tests/try/try_finally_020.phpt
new file mode 100644 (file)
index 0000000..1775681
--- /dev/null
@@ -0,0 +1,44 @@
+--TEST--
+Combination of foreach, finally and exception (call order)
+--XFAIL--
+See Bug #62210 and attempt to fix it in "tmp_liveliness" branch
+--FILE--
+<?php
+class A {
+       public $n = 0;
+       function __construct($n) {
+               $this->n = $n;
+       }
+       function __destruct() {
+               echo "destruct" . $this->n . "\n";
+       }
+}
+
+foreach ([new A(1)] as $a) {
+    $a = null;
+    try {
+        foreach ([new A(2)] as $a) {
+            $a = null;
+            try {
+                foreach ([new A(3)] as $a) {
+                    $a = null;
+                    throw new Exception();
+                }
+            } finally {
+                echo "finally1\n";
+            }
+        }
+    } catch (Exception $e) {
+        echo "catch\n";
+    } finally {
+        echo "finally2\n";
+    }
+}
+?>
+--EXPECT--
+destruct3
+finally1
+destruct2
+catch
+finally2
+destruct1