diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2014-07-02 12:31:50 +0200 |
---|---|---|
committer | Bob Weinand <bobwei9@hotmail.com> | 2014-07-02 12:33:46 +0200 |
commit | 09d1a8aaab15eef182dd71cf6aa506f54dc70ea7 (patch) | |
tree | 065332e3f44382c924c4bccd859e9e751401e353 | |
parent | 05cc46a96b44c4b0ead2909864c9b683103c5946 (diff) | |
download | php-git-09d1a8aaab15eef182dd71cf6aa506f54dc70ea7.tar.gz |
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.
-rw-r--r-- | Zend/tests/constant_expressions_arrays.phpt | 35 | ||||
-rw-r--r-- | Zend/tests/constant_expressions_self_referencing_array.phpt | 13 |
2 files changed, 48 insertions, 0 deletions
diff --git a/Zend/tests/constant_expressions_arrays.phpt b/Zend/tests/constant_expressions_arrays.phpt new file mode 100644 index 0000000000..f1f025180e --- /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 0000000000..7fc477d470 --- /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 + |