]> granicus.if.org Git - php/commitdiff
Handle static return type in AST printer
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Feb 2020 08:45:41 +0000 (09:45 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 19 Feb 2020 08:45:41 +0000 (09:45 +0100)
Fixes OSS-Fuzz #20782.

Zend/tests/assert/expect_015.phpt
Zend/zend_ast.c

index 9b2cabd59f8b9d10b5569747e6f92dd5cba00d03..21ff636f92c8cd5323d3a3e97cc376adab29bc2f 100644 (file)
@@ -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
index c88e6658edadf6eb427ff59335c08ba66258119f..7cfc0450fd84ec1eafd895abbf711b99cb28e56f 100644 (file)
@@ -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;