@@ -3623,7 +3623,7 @@ ZEND_API zend_uchar zend_get_call_op(const zend_op *init_op, zend_function *fbc)
3623
3623
}
3624
3624
/* }}} */
3625
3625
3626
- static bool zend_compile_call_common (znode * result , zend_ast * args_ast , zend_function * fbc ) /* {{{ */
3626
+ static bool zend_compile_call_common (znode * result , zend_ast * args_ast , zend_function * fbc , uint32_t lineno ) /* {{{ */
3627
3627
{
3628
3628
zend_op * opline ;
3629
3629
uint32_t opnum_init = get_next_op_number () - 1 ;
@@ -3660,6 +3660,7 @@ static bool zend_compile_call_common(znode *result, zend_ast *args_ast, zend_fun
3660
3660
if (may_have_extra_named_args ) {
3661
3661
opline -> extended_value = ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS ;
3662
3662
}
3663
+ opline -> lineno = lineno ;
3663
3664
zend_do_extended_fcall_end ();
3664
3665
return false;
3665
3666
}
@@ -3678,7 +3679,7 @@ static bool zend_compile_function_name(znode *name_node, zend_ast *name_ast) /*
3678
3679
}
3679
3680
/* }}} */
3680
3681
3681
- static void zend_compile_ns_call (znode * result , znode * name_node , zend_ast * args_ast ) /* {{{ */
3682
+ static void zend_compile_ns_call (znode * result , znode * name_node , zend_ast * args_ast , uint32_t lineno ) /* {{{ */
3682
3683
{
3683
3684
zend_op * opline = get_next_op ();
3684
3685
opline -> opcode = ZEND_INIT_NS_FCALL_BY_NAME ;
@@ -3687,11 +3688,11 @@ static void zend_compile_ns_call(znode *result, znode *name_node, zend_ast *args
3687
3688
Z_STR (name_node -> u .constant ));
3688
3689
opline -> result .num = zend_alloc_cache_slot ();
3689
3690
3690
- zend_compile_call_common (result , args_ast , NULL );
3691
+ zend_compile_call_common (result , args_ast , NULL , lineno );
3691
3692
}
3692
3693
/* }}} */
3693
3694
3694
- static void zend_compile_dynamic_call (znode * result , znode * name_node , zend_ast * args_ast ) /* {{{ */
3695
+ static void zend_compile_dynamic_call (znode * result , znode * name_node , zend_ast * args_ast , uint32_t lineno ) /* {{{ */
3695
3696
{
3696
3697
if (name_node -> op_type == IS_CONST && Z_TYPE (name_node -> u .constant ) == IS_STRING ) {
3697
3698
const char * colon ;
@@ -3721,7 +3722,7 @@ static void zend_compile_dynamic_call(znode *result, znode *name_node, zend_ast
3721
3722
zend_emit_op (NULL , ZEND_INIT_DYNAMIC_CALL , NULL , name_node );
3722
3723
}
3723
3724
3724
- zend_compile_call_common (result , args_ast , NULL );
3725
+ zend_compile_call_common (result , args_ast , NULL , lineno );
3725
3726
}
3726
3727
/* }}} */
3727
3728
@@ -4015,7 +4016,7 @@ static zend_result zend_compile_func_cuf(znode *result, zend_ast_list *args, zen
4015
4016
}
4016
4017
/* }}} */
4017
4018
4018
- static void zend_compile_assert (znode * result , zend_ast_list * args , zend_string * name , zend_function * fbc ) /* {{{ */
4019
+ static void zend_compile_assert (znode * result , zend_ast_list * args , zend_string * name , zend_function * fbc , uint32_t lineno ) /* {{{ */
4019
4020
{
4020
4021
if (EG (assertions ) >= 0 ) {
4021
4022
znode name_node ;
@@ -4050,7 +4051,7 @@ static void zend_compile_assert(znode *result, zend_ast_list *args, zend_string
4050
4051
zend_ast_list_add ((zend_ast * ) args , arg );
4051
4052
}
4052
4053
4053
- zend_compile_call_common (result , (zend_ast * )args , fbc );
4054
+ zend_compile_call_common (result , (zend_ast * )args , fbc , lineno );
4054
4055
4055
4056
opline = & CG (active_op_array )-> opcodes [check_op_number ];
4056
4057
opline -> op2 .opline_num = get_next_op_number ();
@@ -4377,7 +4378,7 @@ static void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4377
4378
4378
4379
if (name_ast -> kind != ZEND_AST_ZVAL || Z_TYPE_P (zend_ast_get_zval (name_ast )) != IS_STRING ) {
4379
4380
zend_compile_expr (& name_node , name_ast );
4380
- zend_compile_dynamic_call (result , & name_node , args_ast );
4381
+ zend_compile_dynamic_call (result , & name_node , args_ast , ast -> lineno );
4381
4382
return ;
4382
4383
}
4383
4384
@@ -4386,9 +4387,9 @@ static void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4386
4387
if (runtime_resolution ) {
4387
4388
if (zend_string_equals_literal_ci (zend_ast_get_str (name_ast ), "assert" )
4388
4389
&& !is_callable_convert ) {
4389
- zend_compile_assert (result , zend_ast_get_list (args_ast ), Z_STR (name_node .u .constant ), NULL );
4390
+ zend_compile_assert (result , zend_ast_get_list (args_ast ), Z_STR (name_node .u .constant ), NULL , ast -> lineno );
4390
4391
} else {
4391
- zend_compile_ns_call (result , & name_node , args_ast );
4392
+ zend_compile_ns_call (result , & name_node , args_ast , ast -> lineno );
4392
4393
}
4393
4394
return ;
4394
4395
}
@@ -4405,7 +4406,7 @@ static void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4405
4406
4406
4407
/* Special assert() handling should apply independently of compiler flags. */
4407
4408
if (fbc && zend_string_equals_literal (lcname , "assert" ) && !is_callable_convert ) {
4408
- zend_compile_assert (result , zend_ast_get_list (args_ast ), lcname , fbc );
4409
+ zend_compile_assert (result , zend_ast_get_list (args_ast ), lcname , fbc , ast -> lineno );
4409
4410
zend_string_release (lcname );
4410
4411
zval_ptr_dtor (& name_node .u .constant );
4411
4412
return ;
@@ -4417,7 +4418,7 @@ static void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4417
4418
|| (fbc -> type == ZEND_USER_FUNCTION && (CG (compiler_options ) & ZEND_COMPILE_IGNORE_OTHER_FILES ) && fbc -> op_array .filename != CG (active_op_array )-> filename )
4418
4419
) {
4419
4420
zend_string_release_ex (lcname , 0 );
4420
- zend_compile_dynamic_call (result , & name_node , args_ast );
4421
+ zend_compile_dynamic_call (result , & name_node , args_ast , ast -> lineno );
4421
4422
return ;
4422
4423
}
4423
4424
@@ -4436,7 +4437,7 @@ static void zend_compile_call(znode *result, zend_ast *ast, uint32_t type) /* {{
4436
4437
opline = zend_emit_op (NULL , ZEND_INIT_FCALL , NULL , & name_node );
4437
4438
opline -> result .num = zend_alloc_cache_slot ();
4438
4439
4439
- zend_compile_call_common (result , args_ast , fbc );
4440
+ zend_compile_call_common (result , args_ast , fbc , ast -> lineno );
4440
4441
}
4441
4442
}
4442
4443
/* }}} */
@@ -4500,7 +4501,7 @@ static void zend_compile_method_call(znode *result, zend_ast *ast, uint32_t type
4500
4501
}
4501
4502
}
4502
4503
4503
- if (zend_compile_call_common (result , args_ast , fbc )) {
4504
+ if (zend_compile_call_common (result , args_ast , fbc , zend_ast_get_lineno ( method_ast ) )) {
4504
4505
if (short_circuiting_checkpoint != zend_short_circuiting_checkpoint ()) {
4505
4506
zend_error_noreturn (E_COMPILE_ERROR ,
4506
4507
"Cannot combine nullsafe operator with Closure creation" );
@@ -4597,7 +4598,7 @@ static void zend_compile_static_call(znode *result, zend_ast *ast, uint32_t type
4597
4598
}
4598
4599
}
4599
4600
4600
- zend_compile_call_common (result , args_ast , fbc );
4601
+ zend_compile_call_common (result , args_ast , fbc , zend_ast_get_lineno ( method_ast ) );
4601
4602
}
4602
4603
/* }}} */
4603
4604
@@ -4629,7 +4630,7 @@ static void zend_compile_new(znode *result, zend_ast *ast) /* {{{ */
4629
4630
SET_NODE (opline -> op1 , & class_node );
4630
4631
}
4631
4632
4632
- zend_compile_call_common (& ctor_result , args_ast , NULL );
4633
+ zend_compile_call_common (& ctor_result , args_ast , NULL , ast -> lineno );
4633
4634
zend_do_free (& ctor_result );
4634
4635
}
4635
4636
/* }}} */
0 commit comments