indirectCall.test 16 KB

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