---TEST--
-Closures with static variables can be generators
---FILE--
-<?php
-
-function new_closure_gen() {
- return function() {
- static $foo = 0;
- yield ++$foo;
- };
-}
-
-$closure1 = new_closure_gen();
-$closure2 = new_closure_gen();
-
-$gen1 = $closure1();
-$gen2 = $closure1();
-$gen3 = $closure2();
-
-foreach (array($gen1, $gen2, $gen3) as $gen) {
- foreach ($gen as $val) {
- print "$val\n";
- }
-}
-
-?>
---EXPECT--
-int(1)
-int(2)
-int(1)
\ No newline at end of file
+--TEST--\r
+Bug #64578 (Closures with static variables can be generators)\r
+--XFAIL--\r
+Bug #64979 not fixed yet.\r
+--FILE--\r
+<?php\r
+\r
+function new_closure_gen() {\r
+ return function() { \r
+ static $foo = 0; \r
+ yield ++$foo; \r
+ };\r
+}\r
+\r
+$closure1 = new_closure_gen();\r
+$closure2 = new_closure_gen();\r
+\r
+$gen1 = $closure1();\r
+$gen2 = $closure1();\r
+$gen3 = $closure2();\r
+\r
+foreach (array($gen1, $gen2, $gen3) as $gen) {\r
+ foreach ($gen as $val) {\r
+ print "$val\n";\r
+ }\r
+}\r
+\r
+?>\r
+--EXPECT--\r
+int(1)\r
+int(2)\r
+int(1)\r
--- /dev/null
+--TEST--
+Closure 047: Use in preg_replace_callback() using variables by reference
+--FILE--
+<?php
+
+function replace_variables($text, $params) {
+
+ preg_replace_callback( '/(\?)/', function($matches) use (&$params, &$text) {
+
+ $text = preg_replace( '/(\?)/', array_shift( $params ), $text, 1 );
+
+ }, $text );
+
+ return $text;
+}
+
+echo replace_variables('a=?', array('0')) . "\n";
+echo replace_variables('a=?, b=?', array('0', '1')) . "\n";
+echo replace_variables('a=?, b=?, c=?', array('0', '1', '2')) . "\n";
+echo "Done\n";
+?>
+--EXPECT--
+a=0
+a=0, b=1
+a=0, b=1, c=2
+Done
--- /dev/null
+--TEST--
+Closure 048: Use in preg_replace_callback() using variables by reference
+--FILE--
+<?php
+
+function replace_variables($text, $params) {
+
+ $c = function($matches) use (&$params, &$text) {
+ $text = preg_replace( '/(\?)/', array_shift( $params ), $text, 1 );
+ };
+
+ preg_replace_callback( '/(\?)/', $c, $text );
+
+ return $text;
+}
+
+echo replace_variables('a=?', array('0')) . "\n";
+echo replace_variables('a=?, b=?', array('0', '1')) . "\n";
+echo replace_variables('a=?, b=?, c=?', array('0', '1', '2')) . "\n";
+echo "Done\n";
+?>
+--EXPECT--
+a=0
+a=0, b=1
+a=0, b=1, c=2
+Done