diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-02-19 09:45:41 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-02-19 09:45:41 +0100 |
commit | 28a30f7afa41034eefaf67a0a50c23a3ad6e257b (patch) | |
tree | 0c254e633992f4c3fb98fbc9c1d2c9356f3130e7 | |
parent | 736b22dc0b2fc36e9bd87f2ee5af8c4b2be9fd3d (diff) | |
download | php-git-28a30f7afa41034eefaf67a0a50c23a3ad6e257b.tar.gz |
Handle static return type in AST printer
Fixes OSS-Fuzz #20782.
-rw-r--r-- | Zend/tests/assert/expect_015.phpt | 16 | ||||
-rw-r--r-- | Zend/zend_ast.c | 1 |
2 files changed, 9 insertions, 8 deletions
diff --git a/Zend/tests/assert/expect_015.phpt b/Zend/tests/assert/expect_015.phpt index 9b2cabd59f..21ff636f92 100644 --- a/Zend/tests/assert/expect_015.phpt +++ b/Zend/tests/assert/expect_015.phpt @@ -119,7 +119,7 @@ assert(0 && ($a = function &(array &...$a) { } })); -assert(0 && ($a = function () { +assert(0 && ($a = function (): ?static { declare(C=1) { echo 1; } $x = '\'"`$a'; $x = "'\"`$a"; @@ -160,7 +160,7 @@ Warning: assert(): assert(0 && ($a = function () { $y = clone $x; yield 1 => 2; yield from $x; -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d Warning: assert(): assert(0 && ($a = function &(array &$a, ?X $b = null) use($c, &$d): ?X { abstract class A extends B implements C, D { @@ -202,7 +202,7 @@ Warning: assert(): assert(0 && ($a = function &(array &$a, ?X $b = null) use($c, } -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d Warning: assert(): assert(0 && ($a = function &(array &$a, X $b = null, int|float $c) use($c, &$d): X { final class A { @@ -242,7 +242,7 @@ Warning: assert(): assert(0 && ($a = function &(array &$a, X $b = null, int|floa } -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d Warning: assert(): assert(0 && ($a = function &(?array &$a, X $b = null) use($c, &$d): X { class A { @@ -255,7 +255,7 @@ Warning: assert(): assert(0 && ($a = function &(?array &$a, X $b = null) use($c, use T3; } -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d Warning: assert(): assert(0 && ($a = function &(array &...$a) { declare(A = 1, B = 2); @@ -268,9 +268,9 @@ Warning: assert(): assert(0 && ($a = function &(array &...$a) { } finally { echo 3; } -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d -Warning: assert(): assert(0 && ($a = function () { +Warning: assert(): assert(0 && ($a = function (): ?static { declare(C = 1) { echo 1; } @@ -296,4 +296,4 @@ Warning: assert(): assert(0 && ($a = function () { if ($a) { } else { } -})) failed in %sexpect_015.php on line %d +})) failed in %s on line %d diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index c88e6658ed..7cfc0450fd 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -1571,6 +1571,7 @@ simple_list: switch (ast->attr & ~ZEND_TYPE_NULLABLE) { case IS_ARRAY: APPEND_STR("array"); case IS_CALLABLE: APPEND_STR("callable"); + case IS_STATIC: APPEND_STR("static"); EMPTY_SWITCH_DEFAULT_CASE(); } break; |