1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
--TEST--
Attributes AST can be exported.
--INI--
zend.assertions=1
--FILE--
<?php
try {
assert(0 && ($a = #[A1] #[A2] function ($a, #[A3(1)] $b) { }));
} catch (AssertionError $e) {
echo 'assert(): ', $e->getMessage(), ' failed', PHP_EOL;
}
try {
assert(0 && ($a = #[A1(1, 2, 1 + 2)] fn () => 1));
} catch (AssertionError $e) {
echo 'assert(): ', $e->getMessage(), ' failed', PHP_EOL;
}
try {
assert(0 && ($a = new #[A1] class() {
#[A1]#[A2] const FOO = 'foo';
#[A2] public $x;
#[A3] function a() { }
}));
} catch (AssertionError $e) {
echo 'assert(): ', $e->getMessage(), ' failed', PHP_EOL;
}
try {
assert(0 && ($a = function () {
#[A1] class Test1 { }
#[A2] interface Test2 { }
#[A3] trait Test3 { }
}));
} catch (AssertionError $e) {
echo 'assert(): ', $e->getMessage(), ' failed', PHP_EOL;
}
?>
--EXPECT--
assert(): assert(0 && ($a = #[A1] #[A2] function ($a, #[A3(1)] $b) {
})) failed
assert(): assert(0 && ($a = #[A1(1, 2, 1 + 2)] fn() => 1)) failed
assert(): assert(0 && ($a = new #[A1] class {
#[A1]
#[A2]
public const FOO = 'foo';
#[A2]
public $x;
#[A3]
public function a() {
}
})) failed
assert(): assert(0 && ($a = function () {
#[A1]
class Test1 {
}
#[A2]
interface Test2 {
}
#[A3]
trait Test3 {
}
})) failed
|