diff options
author | Nikita Popov <nikic@php.net> | 2016-08-16 12:41:45 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-08-16 12:43:17 +0200 |
commit | 1397f754c8b51ad879c18da85be6b8d1baf77c19 (patch) | |
tree | e4f38643eb467f8a186ef493544439bb0aaa0c14 | |
parent | 443da77c3506a8fea8f22ae4b459284a0b55b512 (diff) | |
download | php-git-1397f754c8b51ad879c18da85be6b8d1baf77c19.tar.gz |
Fix handling of qualified nullable parameter types
compile_typename() can't deal with TYPE_NULLABLE flags, drop it
beforehand.
-rw-r--r-- | Zend/tests/typehints/fq_nullable.phpt | 13 | ||||
-rw-r--r-- | Zend/zend_compile.c | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/Zend/tests/typehints/fq_nullable.phpt b/Zend/tests/typehints/fq_nullable.phpt new file mode 100644 index 0000000000..24ba2ffa62 --- /dev/null +++ b/Zend/tests/typehints/fq_nullable.phpt @@ -0,0 +1,13 @@ +--TEST-- +Fully-qualified nullable parameter type +--FILE-- +<?php + +namespace Foo; +function test(?\stdClass $param) {} +test(new \stdClass); + +?> +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index fc77c6ad2f..b61a819528 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -5140,6 +5140,7 @@ void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast) /* {{{ */ op_array->fn_flags |= ZEND_ACC_HAS_TYPE_HINTS; arg_info->allow_null = has_null_default || is_explicitly_nullable; + type_ast->attr &= ~ZEND_TYPE_NULLABLE; zend_compile_typename(type_ast, arg_info); if (arg_info->type_hint == IS_VOID) { |