constantDeref.test 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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_Int(
  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_Int(
  33. value: 2
  34. )
  35. )
  36. dim: Scalar_Int(
  37. value: 0
  38. )
  39. )
  40. dim: Scalar_Int(
  41. value: 0
  42. )
  43. )
  44. )
  45. 2: Stmt_Expression(
  46. expr: Expr_ArrayDimFetch(
  47. var: Expr_Array(
  48. items: array(
  49. 0: ArrayItem(
  50. key: null
  51. value: Scalar_Int(
  52. value: 1
  53. )
  54. byRef: false
  55. unpack: false
  56. )
  57. 1: ArrayItem(
  58. key: null
  59. value: Scalar_Int(
  60. value: 2
  61. )
  62. byRef: false
  63. unpack: false
  64. )
  65. 2: ArrayItem(
  66. key: null
  67. value: Scalar_Int(
  68. value: 3
  69. )
  70. byRef: false
  71. unpack: false
  72. )
  73. )
  74. )
  75. dim: Scalar_Int(
  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: ArrayItem(
  87. key: null
  88. value: Scalar_Int(
  89. value: 1
  90. )
  91. byRef: false
  92. unpack: false
  93. )
  94. 1: ArrayItem(
  95. key: null
  96. value: Scalar_Int(
  97. value: 2
  98. )
  99. byRef: false
  100. unpack: false
  101. )
  102. 2: ArrayItem(
  103. key: null
  104. value: Scalar_Int(
  105. value: 3
  106. )
  107. byRef: false
  108. unpack: false
  109. )
  110. )
  111. )
  112. dim: Scalar_Int(
  113. value: 2
  114. )
  115. )
  116. dim: Scalar_Int(
  117. value: 0
  118. )
  119. )
  120. dim: Scalar_Int(
  121. value: 0
  122. )
  123. )
  124. )
  125. 4: Stmt_Expression(
  126. expr: Expr_ArrayDimFetch(
  127. var: Expr_Array(
  128. items: array(
  129. 0: ArrayItem(
  130. key: null
  131. value: Scalar_Int(
  132. value: 1
  133. )
  134. byRef: false
  135. unpack: false
  136. )
  137. 1: ArrayItem(
  138. key: null
  139. value: Scalar_Int(
  140. value: 2
  141. )
  142. byRef: false
  143. unpack: false
  144. )
  145. 2: ArrayItem(
  146. key: null
  147. value: Scalar_Int(
  148. value: 3
  149. )
  150. byRef: false
  151. unpack: false
  152. )
  153. )
  154. )
  155. dim: Scalar_Int(
  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: ArrayItem(
  167. key: null
  168. value: Scalar_Int(
  169. value: 1
  170. )
  171. byRef: false
  172. unpack: false
  173. )
  174. 1: ArrayItem(
  175. key: null
  176. value: Scalar_Int(
  177. value: 2
  178. )
  179. byRef: false
  180. unpack: false
  181. )
  182. 2: ArrayItem(
  183. key: null
  184. value: Scalar_Int(
  185. value: 3
  186. )
  187. byRef: false
  188. unpack: false
  189. )
  190. )
  191. )
  192. dim: Scalar_Int(
  193. value: 2
  194. )
  195. )
  196. dim: Scalar_Int(
  197. value: 0
  198. )
  199. )
  200. dim: Scalar_Int(
  201. value: 0
  202. )
  203. )
  204. )
  205. 6: Stmt_Expression(
  206. expr: Expr_ArrayDimFetch(
  207. var: Expr_ConstFetch(
  208. name: Name(
  209. name: FOO
  210. )
  211. )
  212. dim: Scalar_Int(
  213. value: 0
  214. )
  215. )
  216. )
  217. 7: Stmt_Expression(
  218. expr: Expr_ArrayDimFetch(
  219. var: Expr_ClassConstFetch(
  220. class: Name(
  221. name: Foo
  222. )
  223. name: Identifier(
  224. name: BAR
  225. )
  226. )
  227. dim: Scalar_Int(
  228. value: 1
  229. )
  230. )
  231. )
  232. 8: Stmt_Expression(
  233. expr: Expr_ArrayDimFetch(
  234. var: Expr_ArrayDimFetch(
  235. var: Expr_ArrayDimFetch(
  236. var: Expr_ClassConstFetch(
  237. class: Expr_Variable(
  238. name: foo
  239. )
  240. name: Identifier(
  241. name: BAR
  242. )
  243. )
  244. dim: Scalar_Int(
  245. value: 2
  246. )
  247. )
  248. dim: Scalar_Int(
  249. value: 1
  250. )
  251. )
  252. dim: Scalar_Int(
  253. value: 0
  254. )
  255. )
  256. )
  257. )