indirectCall.test 18 KB

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