4d14c09ad95291f557317838d43e81a4e39dfe15
[yaffs-website] / vendor / nikic / php-parser / test / code / parser / expr / fetchAndCall / constantDeref.test
1 Array/string dereferencing
2 -----
3 <?php
4
5 "abc"[2];
6 "abc"[2][0][0];
7
8 [1, 2, 3][2];
9 [1, 2, 3][2][0][0];
10
11 array(1, 2, 3)[2];
12 array(1, 2, 3)[2][0][0];
13
14 FOO[0];
15 Foo::BAR[1];
16 $foo::BAR[2][1][0];
17 -----
18 array(
19     0: Stmt_Expression(
20         expr: Expr_ArrayDimFetch(
21             var: Scalar_String(
22                 value: abc
23             )
24             dim: Scalar_LNumber(
25                 value: 2
26             )
27         )
28     )
29     1: Stmt_Expression(
30         expr: Expr_ArrayDimFetch(
31             var: Expr_ArrayDimFetch(
32                 var: Expr_ArrayDimFetch(
33                     var: Scalar_String(
34                         value: abc
35                     )
36                     dim: Scalar_LNumber(
37                         value: 2
38                     )
39                 )
40                 dim: Scalar_LNumber(
41                     value: 0
42                 )
43             )
44             dim: Scalar_LNumber(
45                 value: 0
46             )
47         )
48     )
49     2: Stmt_Expression(
50         expr: Expr_ArrayDimFetch(
51             var: Expr_Array(
52                 items: array(
53                     0: Expr_ArrayItem(
54                         key: null
55                         value: Scalar_LNumber(
56                             value: 1
57                         )
58                         byRef: false
59                     )
60                     1: Expr_ArrayItem(
61                         key: null
62                         value: Scalar_LNumber(
63                             value: 2
64                         )
65                         byRef: false
66                     )
67                     2: Expr_ArrayItem(
68                         key: null
69                         value: Scalar_LNumber(
70                             value: 3
71                         )
72                         byRef: false
73                     )
74                 )
75             )
76             dim: Scalar_LNumber(
77                 value: 2
78             )
79         )
80     )
81     3: Stmt_Expression(
82         expr: Expr_ArrayDimFetch(
83             var: Expr_ArrayDimFetch(
84                 var: Expr_ArrayDimFetch(
85                     var: Expr_Array(
86                         items: array(
87                             0: Expr_ArrayItem(
88                                 key: null
89                                 value: Scalar_LNumber(
90                                     value: 1
91                                 )
92                                 byRef: false
93                             )
94                             1: Expr_ArrayItem(
95                                 key: null
96                                 value: Scalar_LNumber(
97                                     value: 2
98                                 )
99                                 byRef: false
100                             )
101                             2: Expr_ArrayItem(
102                                 key: null
103                                 value: Scalar_LNumber(
104                                     value: 3
105                                 )
106                                 byRef: false
107                             )
108                         )
109                     )
110                     dim: Scalar_LNumber(
111                         value: 2
112                     )
113                 )
114                 dim: Scalar_LNumber(
115                     value: 0
116                 )
117             )
118             dim: Scalar_LNumber(
119                 value: 0
120             )
121         )
122     )
123     4: Stmt_Expression(
124         expr: Expr_ArrayDimFetch(
125             var: Expr_Array(
126                 items: array(
127                     0: Expr_ArrayItem(
128                         key: null
129                         value: Scalar_LNumber(
130                             value: 1
131                         )
132                         byRef: false
133                     )
134                     1: Expr_ArrayItem(
135                         key: null
136                         value: Scalar_LNumber(
137                             value: 2
138                         )
139                         byRef: false
140                     )
141                     2: Expr_ArrayItem(
142                         key: null
143                         value: Scalar_LNumber(
144                             value: 3
145                         )
146                         byRef: false
147                     )
148                 )
149             )
150             dim: Scalar_LNumber(
151                 value: 2
152             )
153         )
154     )
155     5: Stmt_Expression(
156         expr: Expr_ArrayDimFetch(
157             var: Expr_ArrayDimFetch(
158                 var: Expr_ArrayDimFetch(
159                     var: Expr_Array(
160                         items: array(
161                             0: Expr_ArrayItem(
162                                 key: null
163                                 value: Scalar_LNumber(
164                                     value: 1
165                                 )
166                                 byRef: false
167                             )
168                             1: Expr_ArrayItem(
169                                 key: null
170                                 value: Scalar_LNumber(
171                                     value: 2
172                                 )
173                                 byRef: false
174                             )
175                             2: Expr_ArrayItem(
176                                 key: null
177                                 value: Scalar_LNumber(
178                                     value: 3
179                                 )
180                                 byRef: false
181                             )
182                         )
183                     )
184                     dim: Scalar_LNumber(
185                         value: 2
186                     )
187                 )
188                 dim: Scalar_LNumber(
189                     value: 0
190                 )
191             )
192             dim: Scalar_LNumber(
193                 value: 0
194             )
195         )
196     )
197     6: Stmt_Expression(
198         expr: Expr_ArrayDimFetch(
199             var: Expr_ConstFetch(
200                 name: Name(
201                     parts: array(
202                         0: FOO
203                     )
204                 )
205             )
206             dim: Scalar_LNumber(
207                 value: 0
208             )
209         )
210     )
211     7: Stmt_Expression(
212         expr: Expr_ArrayDimFetch(
213             var: Expr_ClassConstFetch(
214                 class: Name(
215                     parts: array(
216                         0: Foo
217                     )
218                 )
219                 name: Identifier(
220                     name: BAR
221                 )
222             )
223             dim: Scalar_LNumber(
224                 value: 1
225             )
226         )
227     )
228     8: Stmt_Expression(
229         expr: Expr_ArrayDimFetch(
230             var: Expr_ArrayDimFetch(
231                 var: Expr_ArrayDimFetch(
232                     var: Expr_ClassConstFetch(
233                         class: Expr_Variable(
234                             name: foo
235                         )
236                         name: Identifier(
237                             name: BAR
238                         )
239                     )
240                     dim: Scalar_LNumber(
241                         value: 2
242                     )
243                 )
244                 dim: Scalar_LNumber(
245                     value: 1
246                 )
247             )
248             dim: Scalar_LNumber(
249                 value: 0
250             )
251         )
252     )
253 )