Chris@0
|
1 UVS indirect calls
|
Chris@0
|
2 -----
|
Chris@0
|
3 <?php
|
Chris@0
|
4
|
Chris@0
|
5 id('var_dump')(1);
|
Chris@0
|
6 id('id')('var_dump')(2);
|
Chris@0
|
7 id()()('var_dump')(4);
|
Chris@0
|
8 id(['udef', 'id'])[1]()('var_dump')(5);
|
Chris@0
|
9 (function($x) { return $x; })('id')('var_dump')(8);
|
Chris@0
|
10 ($f = function($x = null) use (&$f) {
|
Chris@0
|
11 return $x ?: $f;
|
Chris@0
|
12 })()()()('var_dump')(9);
|
Chris@0
|
13 [$obj, 'id']()('id')($id)('var_dump')(10);
|
Chris@0
|
14 'id'()('id')('var_dump')(12);
|
Chris@0
|
15 ('i' . 'd')()('var_dump')(13);
|
Chris@0
|
16 '\id'('var_dump')(14);
|
Chris@0
|
17 -----
|
Chris@0
|
18 !!php7
|
Chris@0
|
19 array(
|
Chris@0
|
20 0: Expr_FuncCall(
|
Chris@0
|
21 name: Expr_FuncCall(
|
Chris@0
|
22 name: Name(
|
Chris@0
|
23 parts: array(
|
Chris@0
|
24 0: id
|
Chris@0
|
25 )
|
Chris@0
|
26 )
|
Chris@0
|
27 args: array(
|
Chris@0
|
28 0: Arg(
|
Chris@0
|
29 value: Scalar_String(
|
Chris@0
|
30 value: var_dump
|
Chris@0
|
31 )
|
Chris@0
|
32 byRef: false
|
Chris@0
|
33 unpack: false
|
Chris@0
|
34 )
|
Chris@0
|
35 )
|
Chris@0
|
36 )
|
Chris@0
|
37 args: array(
|
Chris@0
|
38 0: Arg(
|
Chris@0
|
39 value: Scalar_LNumber(
|
Chris@0
|
40 value: 1
|
Chris@0
|
41 )
|
Chris@0
|
42 byRef: false
|
Chris@0
|
43 unpack: false
|
Chris@0
|
44 )
|
Chris@0
|
45 )
|
Chris@0
|
46 )
|
Chris@0
|
47 1: Expr_FuncCall(
|
Chris@0
|
48 name: Expr_FuncCall(
|
Chris@0
|
49 name: Expr_FuncCall(
|
Chris@0
|
50 name: Name(
|
Chris@0
|
51 parts: array(
|
Chris@0
|
52 0: id
|
Chris@0
|
53 )
|
Chris@0
|
54 )
|
Chris@0
|
55 args: array(
|
Chris@0
|
56 0: Arg(
|
Chris@0
|
57 value: Scalar_String(
|
Chris@0
|
58 value: id
|
Chris@0
|
59 )
|
Chris@0
|
60 byRef: false
|
Chris@0
|
61 unpack: false
|
Chris@0
|
62 )
|
Chris@0
|
63 )
|
Chris@0
|
64 )
|
Chris@0
|
65 args: array(
|
Chris@0
|
66 0: Arg(
|
Chris@0
|
67 value: Scalar_String(
|
Chris@0
|
68 value: var_dump
|
Chris@0
|
69 )
|
Chris@0
|
70 byRef: false
|
Chris@0
|
71 unpack: false
|
Chris@0
|
72 )
|
Chris@0
|
73 )
|
Chris@0
|
74 )
|
Chris@0
|
75 args: array(
|
Chris@0
|
76 0: Arg(
|
Chris@0
|
77 value: Scalar_LNumber(
|
Chris@0
|
78 value: 2
|
Chris@0
|
79 )
|
Chris@0
|
80 byRef: false
|
Chris@0
|
81 unpack: false
|
Chris@0
|
82 )
|
Chris@0
|
83 )
|
Chris@0
|
84 )
|
Chris@0
|
85 2: Expr_FuncCall(
|
Chris@0
|
86 name: Expr_FuncCall(
|
Chris@0
|
87 name: Expr_FuncCall(
|
Chris@0
|
88 name: Expr_FuncCall(
|
Chris@0
|
89 name: Name(
|
Chris@0
|
90 parts: array(
|
Chris@0
|
91 0: id
|
Chris@0
|
92 )
|
Chris@0
|
93 )
|
Chris@0
|
94 args: array(
|
Chris@0
|
95 )
|
Chris@0
|
96 )
|
Chris@0
|
97 args: array(
|
Chris@0
|
98 )
|
Chris@0
|
99 )
|
Chris@0
|
100 args: array(
|
Chris@0
|
101 0: Arg(
|
Chris@0
|
102 value: Scalar_String(
|
Chris@0
|
103 value: var_dump
|
Chris@0
|
104 )
|
Chris@0
|
105 byRef: false
|
Chris@0
|
106 unpack: false
|
Chris@0
|
107 )
|
Chris@0
|
108 )
|
Chris@0
|
109 )
|
Chris@0
|
110 args: array(
|
Chris@0
|
111 0: Arg(
|
Chris@0
|
112 value: Scalar_LNumber(
|
Chris@0
|
113 value: 4
|
Chris@0
|
114 )
|
Chris@0
|
115 byRef: false
|
Chris@0
|
116 unpack: false
|
Chris@0
|
117 )
|
Chris@0
|
118 )
|
Chris@0
|
119 )
|
Chris@0
|
120 3: Expr_FuncCall(
|
Chris@0
|
121 name: Expr_FuncCall(
|
Chris@0
|
122 name: Expr_FuncCall(
|
Chris@0
|
123 name: Expr_ArrayDimFetch(
|
Chris@0
|
124 var: Expr_FuncCall(
|
Chris@0
|
125 name: Name(
|
Chris@0
|
126 parts: array(
|
Chris@0
|
127 0: id
|
Chris@0
|
128 )
|
Chris@0
|
129 )
|
Chris@0
|
130 args: array(
|
Chris@0
|
131 0: Arg(
|
Chris@0
|
132 value: Expr_Array(
|
Chris@0
|
133 items: array(
|
Chris@0
|
134 0: Expr_ArrayItem(
|
Chris@0
|
135 key: null
|
Chris@0
|
136 value: Scalar_String(
|
Chris@0
|
137 value: udef
|
Chris@0
|
138 )
|
Chris@0
|
139 byRef: false
|
Chris@0
|
140 )
|
Chris@0
|
141 1: Expr_ArrayItem(
|
Chris@0
|
142 key: null
|
Chris@0
|
143 value: Scalar_String(
|
Chris@0
|
144 value: id
|
Chris@0
|
145 )
|
Chris@0
|
146 byRef: false
|
Chris@0
|
147 )
|
Chris@0
|
148 )
|
Chris@0
|
149 )
|
Chris@0
|
150 byRef: false
|
Chris@0
|
151 unpack: false
|
Chris@0
|
152 )
|
Chris@0
|
153 )
|
Chris@0
|
154 )
|
Chris@0
|
155 dim: Scalar_LNumber(
|
Chris@0
|
156 value: 1
|
Chris@0
|
157 )
|
Chris@0
|
158 )
|
Chris@0
|
159 args: array(
|
Chris@0
|
160 )
|
Chris@0
|
161 )
|
Chris@0
|
162 args: array(
|
Chris@0
|
163 0: Arg(
|
Chris@0
|
164 value: Scalar_String(
|
Chris@0
|
165 value: var_dump
|
Chris@0
|
166 )
|
Chris@0
|
167 byRef: false
|
Chris@0
|
168 unpack: false
|
Chris@0
|
169 )
|
Chris@0
|
170 )
|
Chris@0
|
171 )
|
Chris@0
|
172 args: array(
|
Chris@0
|
173 0: Arg(
|
Chris@0
|
174 value: Scalar_LNumber(
|
Chris@0
|
175 value: 5
|
Chris@0
|
176 )
|
Chris@0
|
177 byRef: false
|
Chris@0
|
178 unpack: false
|
Chris@0
|
179 )
|
Chris@0
|
180 )
|
Chris@0
|
181 )
|
Chris@0
|
182 4: Expr_FuncCall(
|
Chris@0
|
183 name: Expr_FuncCall(
|
Chris@0
|
184 name: Expr_FuncCall(
|
Chris@0
|
185 name: Expr_Closure(
|
Chris@0
|
186 static: false
|
Chris@0
|
187 byRef: false
|
Chris@0
|
188 params: array(
|
Chris@0
|
189 0: Param(
|
Chris@0
|
190 type: null
|
Chris@0
|
191 byRef: false
|
Chris@0
|
192 variadic: false
|
Chris@0
|
193 name: x
|
Chris@0
|
194 default: null
|
Chris@0
|
195 )
|
Chris@0
|
196 )
|
Chris@0
|
197 uses: array(
|
Chris@0
|
198 )
|
Chris@0
|
199 returnType: null
|
Chris@0
|
200 stmts: array(
|
Chris@0
|
201 0: Stmt_Return(
|
Chris@0
|
202 expr: Expr_Variable(
|
Chris@0
|
203 name: x
|
Chris@0
|
204 )
|
Chris@0
|
205 )
|
Chris@0
|
206 )
|
Chris@0
|
207 )
|
Chris@0
|
208 args: array(
|
Chris@0
|
209 0: Arg(
|
Chris@0
|
210 value: Scalar_String(
|
Chris@0
|
211 value: id
|
Chris@0
|
212 )
|
Chris@0
|
213 byRef: false
|
Chris@0
|
214 unpack: false
|
Chris@0
|
215 )
|
Chris@0
|
216 )
|
Chris@0
|
217 )
|
Chris@0
|
218 args: array(
|
Chris@0
|
219 0: Arg(
|
Chris@0
|
220 value: Scalar_String(
|
Chris@0
|
221 value: var_dump
|
Chris@0
|
222 )
|
Chris@0
|
223 byRef: false
|
Chris@0
|
224 unpack: false
|
Chris@0
|
225 )
|
Chris@0
|
226 )
|
Chris@0
|
227 )
|
Chris@0
|
228 args: array(
|
Chris@0
|
229 0: Arg(
|
Chris@0
|
230 value: Scalar_LNumber(
|
Chris@0
|
231 value: 8
|
Chris@0
|
232 )
|
Chris@0
|
233 byRef: false
|
Chris@0
|
234 unpack: false
|
Chris@0
|
235 )
|
Chris@0
|
236 )
|
Chris@0
|
237 )
|
Chris@0
|
238 5: Expr_FuncCall(
|
Chris@0
|
239 name: Expr_FuncCall(
|
Chris@0
|
240 name: Expr_FuncCall(
|
Chris@0
|
241 name: Expr_FuncCall(
|
Chris@0
|
242 name: Expr_FuncCall(
|
Chris@0
|
243 name: Expr_Assign(
|
Chris@0
|
244 var: Expr_Variable(
|
Chris@0
|
245 name: f
|
Chris@0
|
246 )
|
Chris@0
|
247 expr: Expr_Closure(
|
Chris@0
|
248 static: false
|
Chris@0
|
249 byRef: false
|
Chris@0
|
250 params: array(
|
Chris@0
|
251 0: Param(
|
Chris@0
|
252 type: null
|
Chris@0
|
253 byRef: false
|
Chris@0
|
254 variadic: false
|
Chris@0
|
255 name: x
|
Chris@0
|
256 default: Expr_ConstFetch(
|
Chris@0
|
257 name: Name(
|
Chris@0
|
258 parts: array(
|
Chris@0
|
259 0: null
|
Chris@0
|
260 )
|
Chris@0
|
261 )
|
Chris@0
|
262 )
|
Chris@0
|
263 )
|
Chris@0
|
264 )
|
Chris@0
|
265 uses: array(
|
Chris@0
|
266 0: Expr_ClosureUse(
|
Chris@0
|
267 var: f
|
Chris@0
|
268 byRef: true
|
Chris@0
|
269 )
|
Chris@0
|
270 )
|
Chris@0
|
271 returnType: null
|
Chris@0
|
272 stmts: array(
|
Chris@0
|
273 0: Stmt_Return(
|
Chris@0
|
274 expr: Expr_Ternary(
|
Chris@0
|
275 cond: Expr_Variable(
|
Chris@0
|
276 name: x
|
Chris@0
|
277 )
|
Chris@0
|
278 if: null
|
Chris@0
|
279 else: Expr_Variable(
|
Chris@0
|
280 name: f
|
Chris@0
|
281 )
|
Chris@0
|
282 )
|
Chris@0
|
283 )
|
Chris@0
|
284 )
|
Chris@0
|
285 )
|
Chris@0
|
286 )
|
Chris@0
|
287 args: array(
|
Chris@0
|
288 )
|
Chris@0
|
289 )
|
Chris@0
|
290 args: array(
|
Chris@0
|
291 )
|
Chris@0
|
292 )
|
Chris@0
|
293 args: array(
|
Chris@0
|
294 )
|
Chris@0
|
295 )
|
Chris@0
|
296 args: array(
|
Chris@0
|
297 0: Arg(
|
Chris@0
|
298 value: Scalar_String(
|
Chris@0
|
299 value: var_dump
|
Chris@0
|
300 )
|
Chris@0
|
301 byRef: false
|
Chris@0
|
302 unpack: false
|
Chris@0
|
303 )
|
Chris@0
|
304 )
|
Chris@0
|
305 )
|
Chris@0
|
306 args: array(
|
Chris@0
|
307 0: Arg(
|
Chris@0
|
308 value: Scalar_LNumber(
|
Chris@0
|
309 value: 9
|
Chris@0
|
310 )
|
Chris@0
|
311 byRef: false
|
Chris@0
|
312 unpack: false
|
Chris@0
|
313 )
|
Chris@0
|
314 )
|
Chris@0
|
315 )
|
Chris@0
|
316 6: Expr_FuncCall(
|
Chris@0
|
317 name: Expr_FuncCall(
|
Chris@0
|
318 name: Expr_FuncCall(
|
Chris@0
|
319 name: Expr_FuncCall(
|
Chris@0
|
320 name: Expr_FuncCall(
|
Chris@0
|
321 name: Expr_Array(
|
Chris@0
|
322 items: array(
|
Chris@0
|
323 0: Expr_ArrayItem(
|
Chris@0
|
324 key: null
|
Chris@0
|
325 value: Expr_Variable(
|
Chris@0
|
326 name: obj
|
Chris@0
|
327 )
|
Chris@0
|
328 byRef: false
|
Chris@0
|
329 )
|
Chris@0
|
330 1: Expr_ArrayItem(
|
Chris@0
|
331 key: null
|
Chris@0
|
332 value: Scalar_String(
|
Chris@0
|
333 value: id
|
Chris@0
|
334 )
|
Chris@0
|
335 byRef: false
|
Chris@0
|
336 )
|
Chris@0
|
337 )
|
Chris@0
|
338 )
|
Chris@0
|
339 args: array(
|
Chris@0
|
340 )
|
Chris@0
|
341 )
|
Chris@0
|
342 args: array(
|
Chris@0
|
343 0: Arg(
|
Chris@0
|
344 value: Scalar_String(
|
Chris@0
|
345 value: id
|
Chris@0
|
346 )
|
Chris@0
|
347 byRef: false
|
Chris@0
|
348 unpack: false
|
Chris@0
|
349 )
|
Chris@0
|
350 )
|
Chris@0
|
351 )
|
Chris@0
|
352 args: array(
|
Chris@0
|
353 0: Arg(
|
Chris@0
|
354 value: Expr_Variable(
|
Chris@0
|
355 name: id
|
Chris@0
|
356 )
|
Chris@0
|
357 byRef: false
|
Chris@0
|
358 unpack: false
|
Chris@0
|
359 )
|
Chris@0
|
360 )
|
Chris@0
|
361 )
|
Chris@0
|
362 args: array(
|
Chris@0
|
363 0: Arg(
|
Chris@0
|
364 value: Scalar_String(
|
Chris@0
|
365 value: var_dump
|
Chris@0
|
366 )
|
Chris@0
|
367 byRef: false
|
Chris@0
|
368 unpack: false
|
Chris@0
|
369 )
|
Chris@0
|
370 )
|
Chris@0
|
371 )
|
Chris@0
|
372 args: array(
|
Chris@0
|
373 0: Arg(
|
Chris@0
|
374 value: Scalar_LNumber(
|
Chris@0
|
375 value: 10
|
Chris@0
|
376 )
|
Chris@0
|
377 byRef: false
|
Chris@0
|
378 unpack: false
|
Chris@0
|
379 )
|
Chris@0
|
380 )
|
Chris@0
|
381 )
|
Chris@0
|
382 7: Expr_FuncCall(
|
Chris@0
|
383 name: Expr_FuncCall(
|
Chris@0
|
384 name: Expr_FuncCall(
|
Chris@0
|
385 name: Expr_FuncCall(
|
Chris@0
|
386 name: Scalar_String(
|
Chris@0
|
387 value: id
|
Chris@0
|
388 )
|
Chris@0
|
389 args: array(
|
Chris@0
|
390 )
|
Chris@0
|
391 )
|
Chris@0
|
392 args: array(
|
Chris@0
|
393 0: Arg(
|
Chris@0
|
394 value: Scalar_String(
|
Chris@0
|
395 value: id
|
Chris@0
|
396 )
|
Chris@0
|
397 byRef: false
|
Chris@0
|
398 unpack: false
|
Chris@0
|
399 )
|
Chris@0
|
400 )
|
Chris@0
|
401 )
|
Chris@0
|
402 args: array(
|
Chris@0
|
403 0: Arg(
|
Chris@0
|
404 value: Scalar_String(
|
Chris@0
|
405 value: var_dump
|
Chris@0
|
406 )
|
Chris@0
|
407 byRef: false
|
Chris@0
|
408 unpack: false
|
Chris@0
|
409 )
|
Chris@0
|
410 )
|
Chris@0
|
411 )
|
Chris@0
|
412 args: array(
|
Chris@0
|
413 0: Arg(
|
Chris@0
|
414 value: Scalar_LNumber(
|
Chris@0
|
415 value: 12
|
Chris@0
|
416 )
|
Chris@0
|
417 byRef: false
|
Chris@0
|
418 unpack: false
|
Chris@0
|
419 )
|
Chris@0
|
420 )
|
Chris@0
|
421 )
|
Chris@0
|
422 8: Expr_FuncCall(
|
Chris@0
|
423 name: Expr_FuncCall(
|
Chris@0
|
424 name: Expr_FuncCall(
|
Chris@0
|
425 name: Expr_BinaryOp_Concat(
|
Chris@0
|
426 left: Scalar_String(
|
Chris@0
|
427 value: i
|
Chris@0
|
428 )
|
Chris@0
|
429 right: Scalar_String(
|
Chris@0
|
430 value: d
|
Chris@0
|
431 )
|
Chris@0
|
432 )
|
Chris@0
|
433 args: array(
|
Chris@0
|
434 )
|
Chris@0
|
435 )
|
Chris@0
|
436 args: array(
|
Chris@0
|
437 0: Arg(
|
Chris@0
|
438 value: Scalar_String(
|
Chris@0
|
439 value: var_dump
|
Chris@0
|
440 )
|
Chris@0
|
441 byRef: false
|
Chris@0
|
442 unpack: false
|
Chris@0
|
443 )
|
Chris@0
|
444 )
|
Chris@0
|
445 )
|
Chris@0
|
446 args: array(
|
Chris@0
|
447 0: Arg(
|
Chris@0
|
448 value: Scalar_LNumber(
|
Chris@0
|
449 value: 13
|
Chris@0
|
450 )
|
Chris@0
|
451 byRef: false
|
Chris@0
|
452 unpack: false
|
Chris@0
|
453 )
|
Chris@0
|
454 )
|
Chris@0
|
455 )
|
Chris@0
|
456 9: Expr_FuncCall(
|
Chris@0
|
457 name: Expr_FuncCall(
|
Chris@0
|
458 name: Scalar_String(
|
Chris@0
|
459 value: \id
|
Chris@0
|
460 )
|
Chris@0
|
461 args: array(
|
Chris@0
|
462 0: Arg(
|
Chris@0
|
463 value: Scalar_String(
|
Chris@0
|
464 value: var_dump
|
Chris@0
|
465 )
|
Chris@0
|
466 byRef: false
|
Chris@0
|
467 unpack: false
|
Chris@0
|
468 )
|
Chris@0
|
469 )
|
Chris@0
|
470 )
|
Chris@0
|
471 args: array(
|
Chris@0
|
472 0: Arg(
|
Chris@0
|
473 value: Scalar_LNumber(
|
Chris@0
|
474 value: 14
|
Chris@0
|
475 )
|
Chris@0
|
476 byRef: false
|
Chris@0
|
477 unpack: false
|
Chris@0
|
478 )
|
Chris@0
|
479 )
|
Chris@0
|
480 )
|
Chris@0
|
481 )
|