mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Merge branch 'PHP-7.1'
* PHP-7.1: Reorder the oplines
This commit is contained in:
commit
adf0256c4a
@ -16,13 +16,8 @@ function foo() : array {
|
||||
foo();
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Uncaught Exception: xxxx in %s:%d
|
||||
Fatal error: Uncaught TypeError: Return value of foo() must be of the type array, null returned in %s029.php:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): foo()
|
||||
#0 %s: foo()
|
||||
#1 {main}
|
||||
|
||||
Next TypeError: Return value of foo() must be of the type array, null returned in %s29.php:%d
|
||||
Stack trace:
|
||||
#0 %s(%d): foo()
|
||||
#1 {main}
|
||||
thrown in %s029.php on line %d
|
||||
thrown in %s on line %d
|
||||
|
@ -4198,14 +4198,14 @@ void zend_compile_return(zend_ast *ast) /* {{{ */
|
||||
}
|
||||
}
|
||||
|
||||
zend_handle_loops_and_finally((expr_node.op_type & (IS_TMP_VAR | IS_VAR)) ? &expr_node : NULL);
|
||||
|
||||
/* Generator return types are handled separately */
|
||||
if (!is_generator && CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) {
|
||||
zend_emit_return_type_check(
|
||||
expr_ast ? &expr_node : NULL, CG(active_op_array)->arg_info - 1, 0);
|
||||
}
|
||||
|
||||
zend_handle_loops_and_finally((expr_node.op_type & (IS_TMP_VAR | IS_VAR)) ? &expr_node : NULL);
|
||||
|
||||
opline = zend_emit_op(NULL, by_ref ? ZEND_RETURN_BY_REF : ZEND_RETURN,
|
||||
&expr_node, NULL);
|
||||
|
||||
|
@ -506,6 +506,7 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
|
||||
}
|
||||
case ZEND_VERIFY_RETURN_TYPE: {
|
||||
zend_arg_info *ret_info = op_array->arg_info - 1;
|
||||
ZEND_ASSERT((opline + 1)->opcode == ZEND_RETURN || (opline + 1)->opcode == ZEND_RETURN_BY_REF);
|
||||
if (ret_info->class_name
|
||||
|| ret_info->type_hint == IS_CALLABLE
|
||||
|| !ZEND_SAME_FAKE_TYPE(ret_info->type_hint, Z_TYPE_P(val))
|
||||
@ -514,13 +515,7 @@ int zend_optimizer_replace_by_const(zend_op_array *op_array,
|
||||
return 0;
|
||||
}
|
||||
MAKE_NOP(opline);
|
||||
|
||||
/* zend_handle_loops_and_finally may inserts other oplines */
|
||||
do {
|
||||
++opline;
|
||||
} while (opline->opcode != ZEND_RETURN && opline->opcode != ZEND_RETURN_BY_REF);
|
||||
ZEND_ASSERT(ZEND_OP1(opline).var == var);
|
||||
|
||||
++opline;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user