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.
This commit is contained in:
Bob Weinand 2014-07-02 12:31:50 +02:00
parent 05cc46a96b
commit 09d1a8aaab
2 changed files with 48 additions and 0 deletions

View File

@ -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

View File

@ -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