diff --git a/Zend/tests/partial_application/never_return.phpt b/Zend/tests/partial_application/never_return.phpt new file mode 100644 index 000000000000..95dc1743a3a0 --- /dev/null +++ b/Zend/tests/partial_application/never_return.phpt @@ -0,0 +1,14 @@ +--TEST-- +PFA can be made from never function +--FILE-- + +--EXPECT-- +bool(true) diff --git a/Zend/zend_partial.c b/Zend/zend_partial.c index d367b5ee21ac..1108cff2301a 100644 --- a/Zend/zend_partial.c +++ b/Zend/zend_partial.c @@ -663,8 +663,8 @@ static zend_ast *zp_compile_forwarding_call( call_ast = zend_ast_create(ZEND_AST_CALL, func_name_ast, args_ast); } - /* Void functions can not 'return $expr' */ - if (ZEND_TYPE_FULL_MASK(return_type) & MAY_BE_VOID) { + /* Void and never functions can not 'return $expr' */ + if (ZEND_TYPE_FULL_MASK(return_type) & (MAY_BE_VOID|MAY_BE_NEVER)) { stmts_ast = zend_ast_list_add(stmts_ast, call_ast); } else { zend_ast *return_ast = zend_ast_create(ZEND_AST_RETURN, call_ast);