]> granicus.if.org Git - php/commitdiff
MFH: Use a better function name for closure related errors and debug_backtrace()
authorJohannes Schlüter <johannes@php.net>
Mon, 3 Nov 2008 19:28:32 +0000 (19:28 +0000)
committerJohannes Schlüter <johannes@php.net>
Mon, 3 Nov 2008 19:28:32 +0000 (19:28 +0000)
Zend/tests/closure_027.phpt
Zend/tests/closure_032.phpt [new file with mode: 0644]
Zend/zend_compile.c

index 7787f729e564e15aed378bd7e92ab9b6bd3de17c..f26e1140450a74fac21a6885924787a890b1dd35 100644 (file)
@@ -25,7 +25,7 @@ NULL
 
 Notice: Undefined variable: y in %s on line %d
 
-Warning: Missing argument 1 for (), called in %s on line %d and defined in %s on line %d
+Warning: Missing argument 1 for {closure}(), called in %s on line %d and defined in %s on line %d
 NULL
 
 Catchable fatal error: Argument 1 passed to test() must be an instance of Closure, instance of stdClass given, called in %s on line %d and defined in %s on line %d
diff --git a/Zend/tests/closure_032.phpt b/Zend/tests/closure_032.phpt
new file mode 100644 (file)
index 0000000..6072f0d
--- /dev/null
@@ -0,0 +1,65 @@
+--TEST--
+Closure 032: Testing Closure and debug_backtrace
+--FILE--
+<?php
+
+function test(closure $a) {
+        $a(23);
+}
+
+
+$c = function($param) { print_r(debug_backtrace()); debug_print_backtrace(); };
+
+$c(23);
+test($c);
+?>
+--EXPECTF--
+Array
+(
+    [0] => Array
+        (
+            [file] => %s
+            [line] => %d
+            [function] => {closure}
+            [args] => Array
+                (
+                    [0] => 23
+                )
+
+        )
+
+)
+#0  {closure}(23) called at [%s:%d]
+Array
+(
+    [0] => Array
+        (
+            [file] => %s
+            [line] => %d
+            [function] => {closure}
+            [args] => Array
+                (
+                    [0] => 23
+                )
+
+        )
+
+    [1] => Array
+        (
+            [file] => %s
+            [line] => %d
+            [function] => test
+            [args] => Array
+                (
+                    [0] => Closure Object
+                        (
+                        )
+
+                )
+
+        )
+
+)
+#0  {closure}(23) called at [%s:%d]
+#1  test(Closure Object ()) called at [%s:%d]
+
index daf67de39f11ee99a7490ad852480f6065e1eeaf..368f8e92a9f6c5a831e75a4e2db05fc915919a6b 100644 (file)
@@ -1387,7 +1387,7 @@ void zend_do_begin_lambda_function_declaration(znode *result, znode *function_to
        zend_op       *current_op;
 
        function_name.op_type = IS_CONST;
-       ZVAL_STRINGL(&function_name.u.constant, "", sizeof("")-1, 1);
+       ZVAL_STRINGL(&function_name.u.constant, "{closure}", sizeof("{closure}")-1, 1);
 
        zend_do_begin_function_declaration(function_token, &function_name, 0, return_reference, NULL TSRMLS_CC);
 
@@ -1402,7 +1402,7 @@ void zend_do_begin_lambda_function_declaration(znode *result, znode *function_to
        if (is_static) {
            CG(active_op_array)->fn_flags |= ZEND_ACC_STATIC;
        }
-    CG(active_op_array)->fn_flags |= ZEND_ACC_CLOSURE;
+       CG(active_op_array)->fn_flags |= ZEND_ACC_CLOSURE;
 }