constDeref.test 6.6 KB

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