indirectCall.test 18 KB

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