菜谱项目

indirectCall.test 14KB

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