constDeref.test 5.8 KB

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