constantDeref.test 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. Array/string dereferencing
  2. -----
  3. <?php
  4. "abc"[2];
  5. "abc"[2][0][0];
  6. [1, 2, 3][2];
  7. [1, 2, 3][2][0][0];
  8. array(1, 2, 3)[2];
  9. array(1, 2, 3)[2][0][0];
  10. FOO[0];
  11. Foo::BAR[1];
  12. $foo::BAR[2][1][0];
  13. -----
  14. array(
  15. 0: Stmt_Expression(
  16. expr: Expr_ArrayDimFetch(
  17. var: Scalar_String(
  18. value: abc
  19. )
  20. dim: Scalar_LNumber(
  21. value: 2
  22. )
  23. )
  24. )
  25. 1: Stmt_Expression(
  26. expr: Expr_ArrayDimFetch(
  27. var: Expr_ArrayDimFetch(
  28. var: Expr_ArrayDimFetch(
  29. var: Scalar_String(
  30. value: abc
  31. )
  32. dim: Scalar_LNumber(
  33. value: 2
  34. )
  35. )
  36. dim: Scalar_LNumber(
  37. value: 0
  38. )
  39. )
  40. dim: Scalar_LNumber(
  41. value: 0
  42. )
  43. )
  44. )
  45. 2: Stmt_Expression(
  46. expr: Expr_ArrayDimFetch(
  47. var: Expr_Array(
  48. items: array(
  49. 0: Expr_ArrayItem(
  50. key: null
  51. value: Scalar_LNumber(
  52. value: 1
  53. )
  54. byRef: false
  55. unpack: false
  56. )
  57. 1: Expr_ArrayItem(
  58. key: null
  59. value: Scalar_LNumber(
  60. value: 2
  61. )
  62. byRef: false
  63. unpack: false
  64. )
  65. 2: Expr_ArrayItem(
  66. key: null
  67. value: Scalar_LNumber(
  68. value: 3
  69. )
  70. byRef: false
  71. unpack: false
  72. )
  73. )
  74. )
  75. dim: Scalar_LNumber(
  76. value: 2
  77. )
  78. )
  79. )
  80. 3: Stmt_Expression(
  81. expr: Expr_ArrayDimFetch(
  82. var: Expr_ArrayDimFetch(
  83. var: Expr_ArrayDimFetch(
  84. var: Expr_Array(
  85. items: array(
  86. 0: Expr_ArrayItem(
  87. key: null
  88. value: Scalar_LNumber(
  89. value: 1
  90. )
  91. byRef: false
  92. unpack: false
  93. )
  94. 1: Expr_ArrayItem(
  95. key: null
  96. value: Scalar_LNumber(
  97. value: 2
  98. )
  99. byRef: false
  100. unpack: false
  101. )
  102. 2: Expr_ArrayItem(
  103. key: null
  104. value: Scalar_LNumber(
  105. value: 3
  106. )
  107. byRef: false
  108. unpack: false
  109. )
  110. )
  111. )
  112. dim: Scalar_LNumber(
  113. value: 2
  114. )
  115. )
  116. dim: Scalar_LNumber(
  117. value: 0
  118. )
  119. )
  120. dim: Scalar_LNumber(
  121. value: 0
  122. )
  123. )
  124. )
  125. 4: Stmt_Expression(
  126. expr: Expr_ArrayDimFetch(
  127. var: Expr_Array(
  128. items: array(
  129. 0: Expr_ArrayItem(
  130. key: null
  131. value: Scalar_LNumber(
  132. value: 1
  133. )
  134. byRef: false
  135. unpack: false
  136. )
  137. 1: Expr_ArrayItem(
  138. key: null
  139. value: Scalar_LNumber(
  140. value: 2
  141. )
  142. byRef: false
  143. unpack: false
  144. )
  145. 2: Expr_ArrayItem(
  146. key: null
  147. value: Scalar_LNumber(
  148. value: 3
  149. )
  150. byRef: false
  151. unpack: false
  152. )
  153. )
  154. )
  155. dim: Scalar_LNumber(
  156. value: 2
  157. )
  158. )
  159. )
  160. 5: Stmt_Expression(
  161. expr: Expr_ArrayDimFetch(
  162. var: Expr_ArrayDimFetch(
  163. var: Expr_ArrayDimFetch(
  164. var: Expr_Array(
  165. items: array(
  166. 0: Expr_ArrayItem(
  167. key: null
  168. value: Scalar_LNumber(
  169. value: 1
  170. )
  171. byRef: false
  172. unpack: false
  173. )
  174. 1: Expr_ArrayItem(
  175. key: null
  176. value: Scalar_LNumber(
  177. value: 2
  178. )
  179. byRef: false
  180. unpack: false
  181. )
  182. 2: Expr_ArrayItem(
  183. key: null
  184. value: Scalar_LNumber(
  185. value: 3
  186. )
  187. byRef: false
  188. unpack: false
  189. )
  190. )
  191. )
  192. dim: Scalar_LNumber(
  193. value: 2
  194. )
  195. )
  196. dim: Scalar_LNumber(
  197. value: 0
  198. )
  199. )
  200. dim: Scalar_LNumber(
  201. value: 0
  202. )
  203. )
  204. )
  205. 6: Stmt_Expression(
  206. expr: Expr_ArrayDimFetch(
  207. var: Expr_ConstFetch(
  208. name: Name(
  209. parts: array(
  210. 0: FOO
  211. )
  212. )
  213. )
  214. dim: Scalar_LNumber(
  215. value: 0
  216. )
  217. )
  218. )
  219. 7: Stmt_Expression(
  220. expr: Expr_ArrayDimFetch(
  221. var: Expr_ClassConstFetch(
  222. class: Name(
  223. parts: array(
  224. 0: Foo
  225. )
  226. )
  227. name: Identifier(
  228. name: BAR
  229. )
  230. )
  231. dim: Scalar_LNumber(
  232. value: 1
  233. )
  234. )
  235. )
  236. 8: Stmt_Expression(
  237. expr: Expr_ArrayDimFetch(
  238. var: Expr_ArrayDimFetch(
  239. var: Expr_ArrayDimFetch(
  240. var: Expr_ClassConstFetch(
  241. class: Expr_Variable(
  242. name: foo
  243. )
  244. name: Identifier(
  245. name: BAR
  246. )
  247. )
  248. dim: Scalar_LNumber(
  249. value: 2
  250. )
  251. )
  252. dim: Scalar_LNumber(
  253. value: 1
  254. )
  255. )
  256. dim: Scalar_LNumber(
  257. value: 0
  258. )
  259. )
  260. )
  261. )