Skip to content

Commit 490c05e

Browse files
committed
Check for legacy iterable arg_info during function registration
This segfaults and I don't know why
1 parent 7c604e1 commit 490c05e

File tree

66 files changed

+263
-4
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+263
-4
lines changed

Zend/zend_API.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2784,13 +2784,19 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend
27842784
num_args++;
27852785
}
27862786

2787+
bool rebuild_arginfo = false;
27872788
/* If types of arguments have to be checked */
27882789
if (reg_function->common.arg_info && num_args) {
27892790
uint32_t i;
27902791
for (i = 0; i < num_args; i++) {
27912792
zend_internal_arg_info *arg_info = &reg_function->internal_function.arg_info[i];
27922793
ZEND_ASSERT(arg_info->name && "Parameter must have a name");
27932794
if (ZEND_TYPE_IS_SET(arg_info->type)) {
2795+
if (ZEND_TYPE_IS_ITERABLE_FALLBACK(arg_info->type)) {
2796+
zend_error(E_CORE_WARNING, "iterable type is now a compile time alias for array|Traversable,"
2797+
" regenerate the argument info via the php-src gen_stub build script");
2798+
rebuild_arginfo = true;
2799+
}
27942800
reg_function->common.fn_flags |= ZEND_ACC_HAS_TYPE_HINTS;
27952801
}
27962802
#if ZEND_DEBUG
@@ -2807,13 +2813,17 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend
28072813

28082814
if (reg_function->common.arg_info &&
28092815
(reg_function->common.fn_flags & (ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_HAS_TYPE_HINTS))) {
2816+
/* Treat return type as an extra argument */
2817+
num_args++;
2818+
rebuild_arginfo = true;
2819+
}
2820+
2821+
if (rebuild_arginfo) {
28102822
/* convert "const char*" class type names into "zend_string*" */
28112823
uint32_t i;
28122824
zend_arg_info *arg_info = reg_function->common.arg_info - 1;
28132825
zend_arg_info *new_arg_info;
28142826

2815-
/* Treat return type as an extra argument */
2816-
num_args++;
28172827
new_arg_info = malloc(sizeof(zend_arg_info) * num_args);
28182828
memcpy(new_arg_info, arg_info, sizeof(zend_arg_info) * num_args);
28192829
reg_function->common.arg_info = new_arg_info + 1;
@@ -2856,6 +2866,12 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend
28562866
}
28572867
}
28582868
}
2869+
if (ZEND_TYPE_IS_ITERABLE_FALLBACK(new_arg_info[i].type)) {
2870+
zend_type legacy_iterable = ZEND_TYPE_INIT_CLASS_CONST_MASK(ZSTR_KNOWN(ZEND_STR_TRAVERSABLE),
2871+
(new_arg_info[i].type.type_mask|_ZEND_TYPE_UNION_BIT|MAY_BE_ARRAY));
2872+
memcpy(&new_arg_info[i].type, &legacy_iterable, sizeof(zend_type));
2873+
//return FAILURE;
2874+
}
28592875
}
28602876
}
28612877

Zend/zend_compile.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6137,8 +6137,8 @@ static zend_type zend_compile_single_typename(zend_ast *ast)
61376137
/* Transform iterable into a type union alias */
61386138
if (type_code == IS_ITERABLE) {
61396139
zend_type iterable = (zend_type) ZEND_TYPE_INIT_CLASS(ZSTR_KNOWN(ZEND_STR_TRAVERSABLE), 0, 0);
6140-
ZEND_TYPE_FULL_MASK(iterable) |= _ZEND_TYPE_NAME_BIT;
61416140
ZEND_TYPE_FULL_MASK(iterable) |= MAY_BE_ARRAY;
6141+
// TODO Use this instead? ZEND_TYPE_INIT_CLASS_CONST_MASK(ZSTR_KNOWN(ZEND_STR_TRAVERSABLE), MAY_BE_ARRAY);
61426142
/* Set iterable bit for BC compat during Reflection and string representation of type */
61436143
ZEND_TYPE_FULL_MASK(iterable) |= _ZEND_TYPE_ITERABLE_BIT;
61446144
/* Inform that the type list is a union type */

ext/zend_test/test.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,29 @@ static ZEND_FUNCTION(zend_iterable)
303303
ZEND_PARSE_PARAMETERS_END();
304304
}
305305

306+
static ZEND_FUNCTION(zend_iterable_legacy)
307+
{
308+
zval *arg1, *arg2;
309+
310+
ZEND_PARSE_PARAMETERS_START(1, 2)
311+
Z_PARAM_ITERABLE(arg1)
312+
Z_PARAM_OPTIONAL
313+
Z_PARAM_ITERABLE_OR_NULL(arg2)
314+
ZEND_PARSE_PARAMETERS_END();
315+
316+
RETURN_COPY(arg1);
317+
}
318+
319+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_iterable_legacy, 0, 1, IS_ITERABLE, 0)
320+
ZEND_ARG_TYPE_INFO(0, arg1, IS_ITERABLE, 0)
321+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, arg2, IS_ITERABLE, 1, "null")
322+
ZEND_END_ARG_INFO()
323+
324+
static const zend_function_entry ext_function_legacy[] = {
325+
ZEND_FE(zend_iterable_legacy, arginfo_zend_iterable_legacy)
326+
ZEND_FE_END
327+
};
328+
306329
static ZEND_FUNCTION(zend_get_unit_enum)
307330
{
308331
ZEND_PARSE_PARAMETERS_NONE();
@@ -580,6 +603,9 @@ PHP_MINIT_FUNCTION(zend_test)
580603
zend_test_unit_enum = register_class_ZendTestUnitEnum();
581604
zend_test_string_enum = register_class_ZendTestStringEnum();
582605

606+
/* Register legacy iterable function */
607+
zend_register_functions(NULL, ext_function_legacy, NULL, EG(current_module)->type);
608+
583609
// Loading via dl() not supported with the observer API
584610
if (type != MODULE_TEMPORARY) {
585611
REGISTER_INI_ENTRIES();

ext/zend_test/tests/attribute_arguments.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ var_dump($attribute->newInstance());
8686

8787
?>
8888
--EXPECTF--
89+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
90+
91+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
8992
array(1) {
9093
[0]=>
9194
string(6) "value1"

ext/zend_test/tests/attribute_hash_table_leak.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ var_dump($o->override("foo"));
5555

5656
?>
5757
--EXPECT--
58+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
59+
60+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
5861
int(1)
5962
int(2)
6063
int(3)

ext/zend_test/tests/fiber_test_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ var_dump($fiber->getReturn()); // int(1)
2121

2222
?>
2323
--EXPECT--
24+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
25+
26+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2427
int(123)
2528
int(246)
2629
NULL

ext/zend_test/tests/fiber_test_02.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ var_dump($test->resume(2)); // NULL
1717

1818
?>
1919
--EXPECT--
20+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
21+
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2023
int(1)
2124
int(2)
2225
NULL

ext/zend_test/tests/fiber_test_03.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ $value = $fiber->throw(new Exception('test'));
2222

2323
?>
2424
--EXPECTF--
25+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
26+
27+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2528
int(1)
2629
int(2)
2730
int(3)

ext/zend_test/tests/fiber_test_04.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ var_dump($fiber->getReturn()); // int(-1)
3030

3131
?>
3232
--EXPECT--
33+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
34+
35+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3336
int(1)
3437
int(2)
3538
int(3)

ext/zend_test/tests/fiber_test_05.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ $value = $test->resume(2 * $value);
2828

2929
?>
3030
--EXPECT--
31+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
32+
33+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3134
int(1)
3235
int(2)
3336
int(3)

ext/zend_test/tests/fiber_test_06.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ var_dump($fiber->resume('2')); // NULL
2929

3030
?>
3131
--EXPECT--
32+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
33+
34+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3235
int(10)
3336
int(1)
3437
string(1) "1"

ext/zend_test/tests/fiber_test_07.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,8 @@ var_dump($fiber->start());
1717

1818
?>
1919
--EXPECT--
20+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
21+
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2023
int(1)
2124
NULL

ext/zend_test/tests/gen_stub_test_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ $foo->foo = new \ZendTestNS2\ZendSubNS\Foo();
1111
var_dump($foo);
1212
?>
1313
--EXPECTF--
14+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
15+
16+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
1417
object(ZendTestNS2\Foo)#%d (%d) {
1518
["foo"]=>
1619
uninitialized(ZendTestNS2\ZendSubNS\Foo)

ext/zend_test/tests/observer_backtrace_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ function foo()
3737
var_dump(foo());
3838
?>
3939
--EXPECTF--
40+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
41+
42+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
4043
<!-- init '%s%eobserver_backtrace_%d.php' -->
4144
<!--
4245
{main} %s%eobserver_backtrace_%d.php

ext/zend_test/tests/observer_basic_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ foo();
2626
echo 'DONE' . PHP_EOL;
2727
?>
2828
--EXPECTF--
29+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
30+
31+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2932
<!-- init '%s%eobserver_basic_01.php' -->
3033
<file '%s%eobserver_basic_01.php'>
3134
<!-- init foo() -->

ext/zend_test/tests/observer_basic_02.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ $test->foo();
3030
echo 'DONE' . PHP_EOL;
3131
?>
3232
--EXPECTF--
33+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
34+
35+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3336
<!-- init '%s%eobserver_basic_02.php' -->
3437
<file '%s%eobserver_basic_02.php'>
3538
<!-- init TestClass::foo() -->

ext/zend_test/tests/observer_basic_03.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ include __DIR__ . '/observer.inc';
1717
foo();
1818
?>
1919
--EXPECTF--
20+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
21+
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2023
<!-- init '%s%eobserver_basic_03.php' -->
2124
<file '%s%eobserver_basic_03.php'>
2225
<!-- init foo() -->

ext/zend_test/tests/observer_basic_04.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ include __DIR__ . '/observer.inc';
1717
foo();
1818
?>
1919
--EXPECTF--
20+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
21+
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2023
<!-- init '%s%eobserver_basic_04.php' -->
2124
<file '%s%eobserver_basic_04.php'>
2225
<!-- init foo() -->

ext/zend_test/tests/observer_basic_05.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ include __DIR__ . '/observer.inc';
1717
foo();
1818
?>
1919
--EXPECTF--
20+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
21+
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2023
<!-- init '%s%eobserver_basic_05.php' -->
2124
<!-- init foo() -->
2225
<foo>

ext/zend_test/tests/observer_bug81430_1.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ $r = new \ReflectionFunction("B");
2323
call_user_func([$r->getAttributes(A::class)[0], 'newInstance']);
2424
?>
2525
--EXPECTF--
26+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
27+
28+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2629
<!-- init '%s' -->
2730
<file '%s'>
2831
<!-- init A::__construct() -->

ext/zend_test/tests/observer_bug81430_2.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ $r = new \ReflectionFunction("B");
2323
call_user_func([$r->getAttributes(A::class)[0], 'newInstance']);
2424
?>
2525
--EXPECTF--
26+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
27+
28+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2629
<!-- init '%s' -->
2730
<file '%s'>
2831
<!-- init A::__construct() -->

ext/zend_test/tests/observer_bug81435.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ a();
3333

3434
?>
3535
--EXPECTF--
36+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
37+
38+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3639
<!-- init '%s' -->
3740
<!-- init a() -->
3841
<a>

ext/zend_test/tests/observer_call_user_func_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ namespace {
2727
}
2828
?>
2929
--EXPECTF--
30+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
31+
32+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3033
<!-- init '%s%eobserver_call_user_func_%d.php' -->
3134
<file '%s%eobserver_call_user_func_%d.php'>
3235
<!-- init Test\MyClass::myMethod() -->

ext/zend_test/tests/observer_call_user_func_02.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ namespace {
2727
}
2828
?>
2929
--EXPECTF--
30+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
31+
32+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3033
<!-- init '%s%eobserver_call_user_func_%d.php' -->
3134
<file '%s%eobserver_call_user_func_%d.php'>
3235
<!-- init Test\MyClass::myMethod() -->

ext/zend_test/tests/observer_call_user_func_03.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ namespace Test {
2626
}
2727
?>
2828
--EXPECTF--
29+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
30+
31+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2932
<!-- init '%s%eobserver_call_user_func_%d.php' -->
3033
<file '%s%eobserver_call_user_func_%d.php'>
3134
<!-- init Test\MyClass::myMethod() -->

ext/zend_test/tests/observer_call_user_func_04.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ namespace Test {
2626
}
2727
?>
2828
--EXPECTF--
29+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
30+
31+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2932
<!-- init '%s%eobserver_call_user_func_%d.php' -->
3033
<file '%s%eobserver_call_user_func_%d.php'>
3134
<!-- init Test\MyClass::myMethod() -->

ext/zend_test/tests/observer_closure_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ $foo($bar);
2323
echo 'DONE' . PHP_EOL;
2424
?>
2525
--EXPECTF--
26+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
27+
28+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2629
<!-- init '%s%eobserver_closure_%d.php' -->
2730
<file '%s%eobserver_closure_%d.php'>
2831
<!-- init {closure}() -->

ext/zend_test/tests/observer_closure_02.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ $closure();
2222
echo 'DONE' . PHP_EOL;
2323
?>
2424
--EXPECTF--
25+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
26+
27+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2528
<!-- init '%s%eobserver_closure_%d.php' -->
2629
<file '%s%eobserver_closure_%d.php'>
2730
<!-- init Foo::bar() -->

ext/zend_test/tests/observer_error_01.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ foo();
1919
echo 'You should not see this.';
2020
?>
2121
--EXPECTF--
22+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
23+
24+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2225
<!-- init '%s%eobserver_error_%d.php' -->
2326
<file '%s%eobserver_error_%d.php'>
2427
<!-- init foo() -->

ext/zend_test/tests/observer_error_02.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ foo();
1818
echo 'You should not see this.';
1919
?>
2020
--EXPECTF--
21+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
22+
23+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2124
<!-- init '%s%eobserver_error_%d.php' -->
2225
<file '%s%eobserver_error_%d.php'>
2326
<!-- init foo() -->

ext/zend_test/tests/observer_error_03.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ main();
2424
echo 'Done.' . PHP_EOL;
2525
?>
2626
--EXPECTF--
27+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
28+
29+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
2730
<!-- init '%s%eobserver_error_%d.php' -->
2831
<file '%s%eobserver_error_%d.php'>
2932
<!-- init main() -->

ext/zend_test/tests/observer_error_04.phpt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ try {
3030
echo 'Done.' . PHP_EOL;
3131
?>
3232
--EXPECTF--
33+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
34+
35+
Warning: iterable type is now a compile time alias for array|Traversable, regenerate the argument info via the php-src gen_stub build script in Unknown on line 0
3336
<!-- init '%s%eobserver_error_%d.php' -->
3437
<file '%s%eobserver_error_%d.php'>
3538
<!-- init main() -->

0 commit comments

Comments
 (0)