Re: com php-src: Add tests for constant expression arrays Adding one failing (!) test for now about circular constant references embedded in a
constant AST, must be fixed before PHP 5.6 release.: Zend/tests/constant_expressions_arrays.phpt
Zend/tests/constant_expressions_self_referencing_array.phpt
| From: | Nikita Popov | Date: | Wed, 02 Jul 2014 14:55:23 +0000 |
| Subject: | Re: com php-src: Add tests for constant expression arrays Adding one failing (!) test for now about circular constant references embedded in a constant AST, must be fixed before PHP 5.6 release.: Zend/tests/constant_expressions_arrays.phpt Zend/tests/constant_expressions_self_referencing_array.phpt |
||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-79197@lists.php.net to get a copy of this message | ||
On Wed, Jul 2, 2014 at 12:33 PM, Bob Weinand <bwoebi@php.net> wrote:
> Commit: 09d1a8aaab15eef182dd71cf6aa506f54dc70ea7
> Author: Bob Weinand <bobwei9@hotmail.com> Wed, 2 Jul 2014
> 12:31:50 +0200
> Parents: 05cc46a96b44c4b0ead2909864c9b683103c5946
> Branches: PHP-5.6
>
> Link:
>
> http://git.php.net/?p=php-src.git;a=commitdiff;h=09d1a8aaab15eef182dd71cf6aa506f54dc70ea7
>
> Log:
> Add tests for constant expression arrays
> Adding one failing (!) test for now about circular constant references
> embedded in a constant AST, must be fixed before PHP 5.6 release.
>
> Changed paths:
> A Zend/tests/constant_expressions_arrays.phpt
> A Zend/tests/constant_expressions_self_referencing_array.phpt
>
>
> Diff:
> diff --git a/Zend/tests/constant_expressions_arrays.phpt
> b/Zend/tests/constant_expressions_arrays.phpt
> new file mode 100644
> index 0000000..f1f0251
> --- /dev/null
> +++ b/Zend/tests/constant_expressions_arrays.phpt
> @@ -0,0 +1,35 @@
> +---TEST---
> +Constant expressions with arrays
> +---FILE---
> +<?php
> +const a = [1,2,[3,[4]]];
> +const b = a[0];
> +const c = a[2][0];
> +const d = a[2];
> +const e = ["string" => [1]]["string"][0];
> +
> +var_dump(b, c, e);
> +
> +function test ($a = d[1][0]) {
> + var_dump($a);
> +}
> +
> +test();
> +
> +class foo {
> + const bar = [1][0];
> +}
> +
> +var_dump(foo::bar);
> +
> +var_dump(a); // Eventually allow that later with array dereferencing of
> constants
> +
> +?>
> +---EXPECTF---
> +int(1)
> +int(3)
> +int(1)
> +int(4)
> +int(1)
> +
> +Fatal error: Arrays are not allowed in constants at run-time in %s on
> line %d
> diff --git a/Zend/tests/constant_expressions_self_referencing_array.phpt
> b/Zend/tests/constant_expressions_self_referencing_array.phpt
> new file mode 100644
> index 0000000..7fc477d
> --- /dev/null
> +++ b/Zend/tests/constant_expressions_self_referencing_array.phpt
> @@ -0,0 +1,13 @@
> +---TEST---
> +Self-referencing constant expression (part of a constant AST)
> +---FILE---
> +<?php
> +class A {
> + const FOO = [self::BAR];
> + const BAR = [self::FOO];
> +}
> +var_dump(A::FOO);
> +?>
> +---EXPECTF---
> +Fatal error: Cannot declare self-referencing constant 'self::FOO' in %s
> on line %d
> +
>
Could you please mark the failing test as XFAIL?
Nikita