]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.2' into PHP-7.3
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 1 Jul 2019 16:12:28 +0000 (18:12 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 1 Jul 2019 16:12:28 +0000 (18:12 +0200)
* PHP-7.2:
  Add missing SKIPIFs

1  2 
ext/opcache/tests/bug76337.phpt
ext/opcache/tests/bug77257.phpt
ext/opcache/tests/bug77275.phpt
ext/opcache/tests/bug77310_1.phpt
ext/opcache/tests/bug78015.phpt
ext/opcache/tests/invalid_new_dce.phpt
ext/opcache/tests/jmp_elim_004.phpt
ext/opcache/tests/ssa_bug_011.phpt

index fe3fd8d40e65219ffe675182d85a84dfb019a38f,07608e2660d25f01a6fc5ea135016eddaebe748b..5001942526d35ab681a83209f71b5e4ce6a8664e
@@@ -1,7 -1,7 +1,8 @@@
  --TEST--
  Bug 76337: segmentation fault when an extension use zend_register_class_alias() and opcache enabled
  --SKIPIF--
 -<?php if (!class_exists('_ZendTestClass') || !extension_loaded('Zend OPcache')) die('skip');
++<?php require_once('skipif.inc'); ?>
 +<?php if (!extension_loaded('zend-test')) die('skip zend-test extension not loaded');
  --INI--
  opcache.enable=1
  opcache.enable_cli=1
index 4786a9f3c056d05ef8350b986ae0aa24d1ed1df6,0000000000000000000000000000000000000000..ef2e17feb4979e9645f77593afeec0bc3584429b
mode 100644,000000..100644
--- /dev/null
@@@ -1,21 -1,0 +1,23 @@@
 +--TEST--
 +Bug #77257: value of variable assigned in a switch() construct gets lost
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +function test($x) {
 +    $a = false;
 +    switch($x["y"]) {
 +        case "a":
 +            $a = true;
 +            break;
 +        case "b":
 +            break;
 +        case "c":
 +            break;
 +    }
 +    return $a;
 +}
 +var_dump(test(["y" => "a"]));
 +?>
 +--EXPECT--
 +bool(true)
index 28f6a3036f5f19575f6b3a41f3913fa8705f95ff,0000000000000000000000000000000000000000..d482f9e7205ee5d8d01da6dbac12596e24618e4d
mode 100644,000000..100644
--- /dev/null
@@@ -1,30 -1,0 +1,32 @@@
 +--TEST--
 +Bug #77275: OPcache optimization problem for ArrayAccess->offsetGet(string)
 +--INI--
 +opcache.enable_cli=1
 +opcache.optimization_level=-1
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +namespace Foo;
 +class Bar { public function get() {} }
 +class Record implements \ArrayAccess {
 +    public function offsetSet($offset, $value) { throw new \Exception; }
 +    public function offsetGet($offset) { var_dump($offset); }
 +    public function offsetExists($offset) { throw new \Exception; }
 +    public function offsetUnset($offset) { throw new \Exception; }
 +}
 +class Baz {
 +    public function run() {
 +        $a = pow(1, 2);
 +        $b = new Bar();
 +        $c = new Bar();
 +        $d = new Bar();
 +        $id = $b->get('a', 'b', 'c');
 +        $rec = new Record();
 +        $id = $rec['a'];
 +    }
 +}
 +(new Baz())->run();
 +?>
 +--EXPECT--
 +string(1) "a"
index f7baec7fb81de066ac8165d8710fe3a38159f531,0000000000000000000000000000000000000000..a9af4bffba8a877c7d2ad2de3c538af35d0ff994
mode 100644,000000..100644
--- /dev/null
@@@ -1,19 -1,0 +1,21 @@@
 +--TEST--
 +Bug #77310 (1): Incorrect SCCP for compound assign to arrays
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +
 +function breakit($data_arr) {
 +    $foo[0] = "";
 +    for ($i = 0; $i < count($data_arr); $i++) {
 +        $foo[0] .= $data_arr[$i];
 +    }
 +    echo $foo[0] . "\n";
 +}
 +
 +$data = ['zero', 'one', 'two'];
 +breakit($data);
 +
 +?>
 +--EXPECT--
 +zeroonetwo
index b2ecceacdeb0c87870b029118a10a396ae34dcab,0000000000000000000000000000000000000000..0a03c9834f7908762fddd7309d03f04ea4870143
mode 100644,000000..100644
--- /dev/null
@@@ -1,113 -1,0 +1,115 @@@
 +--TEST--
 +Bug #78015: Incorrect evaluation of expressions involving partials array in SCCP
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +
 +$x = 1;
 +
 +function test1() {
 +    global $x;
 +    $a = ['b' => [$x], 'c' => [$x]];
 +    $d = $a['b'] + $a['c'];
 +    return $d;
 +}
 +
 +function test2() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $d = !$a['b'];
 +    return $d;
 +}
 +
 +function test3() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $d = (int) $a['b'];
 +    return $d;
 +}
 +
 +function test4() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $d = $a['b'] ?: 42;
 +    return $d;
 +}
 +
 +function test5() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $d = is_array($a['b']);
 +    return $d;
 +}
 +
 +function test6() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $b = "foo";
 +    $d = "$a[b]{$b}bar";
 +    return $d;
 +}
 +
 +function test7() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    $y = 1;
 +    foreach ($a['b'] as $_) {
 +        $y = 2;
 +    }
 +    return $y;
 +}
 +
 +function test8($array) {
 +    $i = 0;
 +    $ret = [[]];
 +    foreach ($array as $_) {
 +      $i++;
 +      $ret = [[
 +        'x' => 0,
 +        'y' => $i,
 +      ]];
 +    }
 +    return $ret[0];
 +}
 +
 +function test9() {
 +    global $x;
 +    $a = ['b' => [$x]];
 +    return serialize($a['b']);
 +}
 +
 +var_dump(test1());
 +var_dump(test2());
 +var_dump(test3());
 +var_dump(test4());
 +var_dump(test5());
 +var_dump(test6());
 +var_dump(test7());
 +var_dump(test8([1]));
 +var_dump(test9());
 +
 +?>
 +--EXPECTF--
 +array(1) {
 +  [0]=>
 +  int(1)
 +}
 +bool(false)
 +int(1)
 +array(1) {
 +  [0]=>
 +  int(1)
 +}
 +bool(true)
 +
 +Notice: Array to string conversion in %s on line %d
 +string(11) "Arrayfoobar"
 +int(2)
 +array(2) {
 +  ["x"]=>
 +  int(0)
 +  ["y"]=>
 +  int(1)
 +}
 +string(14) "a:1:{i:0;i:1;}"
index 8f44b80f106f64b0bb8167a66353633c29214fce,0000000000000000000000000000000000000000..c029a49bdc8b9d476effa0ffba06491e95e35e96
mode 100644,000000..100644
--- /dev/null
@@@ -1,40 -1,0 +1,42 @@@
 +--TEST--
 +Throwings NEWs should not be DCEd
 +--INI--
 +opcache.enable_cli=1
 +opcache.optimization_level=-1
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +
 +abstract class Foo {}
 +interface Bar {}
 +trait Baz {}
 +
 +class Abc {
 +    const BAR = Abc::BAR;
 +}
 +
 +function test1() {
 +    $x = new Foo;
 +}
 +function test2() {
 +    $x = new Bar;
 +}
 +function test3() {
 +    $x = new Baz;
 +}
 +function test4() {
 +    $x = new Abc;
 +}
 +
 +try { test1(); } catch (Error $e) { echo $e->getMessage(), "\n"; }
 +try { test2(); } catch (Error $e) { echo $e->getMessage(), "\n"; }
 +try { test3(); } catch (Error $e) { echo $e->getMessage(), "\n"; }
 +try { test4(); } catch (Error $e) { echo $e->getMessage(), "\n"; }
 +
 +?>
 +--EXPECT--
 +Cannot instantiate abstract class Foo
 +Cannot instantiate interface Bar
 +Cannot instantiate trait Baz
 +Cannot declare self-referencing constant 'Abc::BAR'
index f4053d9616b4f7016f9376b6f288b1d5b7a48ce6,0000000000000000000000000000000000000000..8834ab4e85ce2eed981c2db617aca88c6fa18668
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,26 @@@
 +--TEST--
 +Incorrect empty basic block elimination
 +--INI--
 +opcache.enable_cli=1
 +opcache.optimization_level=-1
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +
 +function test() {
 +    $foo = "test";
 +    var_dump($foo ?? "default");
 +
 +    $null = null;
 +    var_dump($null ?? 3);
 +    var_dump($null ?? new stdClass);
 +}
 +test();
 +
 +?>
 +--EXPECT--
 +string(4) "test"
 +int(3)
 +object(stdClass)#1 (0) {
 +}
index 3c12777724e408f7a033d4e0804491e44c5eafe8,0000000000000000000000000000000000000000..c25e9c46abf69323415bcfbc2a0a77bf0e88686b
mode 100644,000000..100644
--- /dev/null
@@@ -1,15 -1,0 +1,17 @@@
 +--TEST--
 +Wrong assertion
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
 +--FILE--
 +<?php
 +function foo($transitions) {
 +      foreach ($transitions as $transition) {
 +              if (isEmpty()) {
 +                      continue;
 +              }
 +      }
 +}
 +?>
 +OK
 +--EXPECT--
 +OK