xref: /php-ast/tests/array_destructuring.phpt (revision 260678d4)
1--TEST--
2Array destructuring
3--FILE--
4<?php
5
6require __DIR__ . '/../util.php';
7
8$code = <<<'PHP'
9<?php
10list('foo' => $a, 'bar' => $b) = $x;
11[$a, $b] = $x;
12['foo' => $a, 'bar' => $b] = $x;
13[, [$a]] = $x;
14PHP;
15
16echo ast_dump(ast\parse_code($code, $version=70));
17
18?>
19--EXPECT--
20AST_STMT_LIST
21    0: AST_ASSIGN
22        var: AST_ARRAY
23            flags: ARRAY_SYNTAX_LIST (1)
24            0: AST_ARRAY_ELEM
25                flags: 0
26                value: AST_VAR
27                    name: "a"
28                key: "foo"
29            1: AST_ARRAY_ELEM
30                flags: 0
31                value: AST_VAR
32                    name: "b"
33                key: "bar"
34        expr: AST_VAR
35            name: "x"
36    1: AST_ASSIGN
37        var: AST_ARRAY
38            flags: ARRAY_SYNTAX_SHORT (3)
39            0: AST_ARRAY_ELEM
40                flags: 0
41                value: AST_VAR
42                    name: "a"
43                key: null
44            1: AST_ARRAY_ELEM
45                flags: 0
46                value: AST_VAR
47                    name: "b"
48                key: null
49        expr: AST_VAR
50            name: "x"
51    2: AST_ASSIGN
52        var: AST_ARRAY
53            flags: ARRAY_SYNTAX_SHORT (3)
54            0: AST_ARRAY_ELEM
55                flags: 0
56                value: AST_VAR
57                    name: "a"
58                key: "foo"
59            1: AST_ARRAY_ELEM
60                flags: 0
61                value: AST_VAR
62                    name: "b"
63                key: "bar"
64        expr: AST_VAR
65            name: "x"
66    3: AST_ASSIGN
67        var: AST_ARRAY
68            flags: ARRAY_SYNTAX_SHORT (3)
69            0: null
70            1: AST_ARRAY_ELEM
71                flags: 0
72                value: AST_ARRAY
73                    flags: ARRAY_SYNTAX_SHORT (3)
74                    0: AST_ARRAY_ELEM
75                        flags: 0
76                        value: AST_VAR
77                            name: "a"
78                        key: null
79                key: null
80        expr: AST_VAR
81            name: "x"