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_expressi ons_self_referencing_array.phpt
| From: | Bob Weinand | Date: | Wed, 02 Jul 2014 10:33:46 +0000 |
| Subject: | 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_expressi ons_self_referencing_array.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79195@lists.php.net to get a copy of this message | ||
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
+