new.test 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. New
  2. -----
  3. <?php
  4. new A;
  5. new A($b);
  6. // class name variations
  7. new $a();
  8. new $a['b']();
  9. new A::$b();
  10. // DNCR object access
  11. new $a->b();
  12. new $a->b->c();
  13. new $a->b['c']();
  14. new $a->b{'c'}();
  15. // test regression introduces by new dereferencing syntax
  16. (new A);
  17. -----
  18. array(
  19. 0: Stmt_Expression(
  20. expr: Expr_New(
  21. class: Name(
  22. name: A
  23. )
  24. args: array(
  25. )
  26. )
  27. )
  28. 1: Stmt_Expression(
  29. expr: Expr_New(
  30. class: Name(
  31. name: A
  32. )
  33. args: array(
  34. 0: Arg(
  35. name: null
  36. value: Expr_Variable(
  37. name: b
  38. )
  39. byRef: false
  40. unpack: false
  41. )
  42. )
  43. )
  44. )
  45. 2: Stmt_Expression(
  46. expr: Expr_New(
  47. class: Expr_Variable(
  48. name: a
  49. )
  50. args: array(
  51. )
  52. )
  53. comments: array(
  54. 0: // class name variations
  55. )
  56. )
  57. 3: Stmt_Expression(
  58. expr: Expr_New(
  59. class: Expr_ArrayDimFetch(
  60. var: Expr_Variable(
  61. name: a
  62. )
  63. dim: Scalar_String(
  64. value: b
  65. )
  66. )
  67. args: array(
  68. )
  69. )
  70. )
  71. 4: Stmt_Expression(
  72. expr: Expr_New(
  73. class: Expr_StaticPropertyFetch(
  74. class: Name(
  75. name: A
  76. )
  77. name: VarLikeIdentifier(
  78. name: b
  79. )
  80. )
  81. args: array(
  82. )
  83. )
  84. )
  85. 5: Stmt_Expression(
  86. expr: Expr_New(
  87. class: Expr_PropertyFetch(
  88. var: Expr_Variable(
  89. name: a
  90. )
  91. name: Identifier(
  92. name: b
  93. )
  94. )
  95. args: array(
  96. )
  97. )
  98. comments: array(
  99. 0: // DNCR object access
  100. )
  101. )
  102. 6: Stmt_Expression(
  103. expr: Expr_New(
  104. class: Expr_PropertyFetch(
  105. var: Expr_PropertyFetch(
  106. var: Expr_Variable(
  107. name: a
  108. )
  109. name: Identifier(
  110. name: b
  111. )
  112. )
  113. name: Identifier(
  114. name: c
  115. )
  116. )
  117. args: array(
  118. )
  119. )
  120. )
  121. 7: Stmt_Expression(
  122. expr: Expr_New(
  123. class: Expr_ArrayDimFetch(
  124. var: Expr_PropertyFetch(
  125. var: Expr_Variable(
  126. name: a
  127. )
  128. name: Identifier(
  129. name: b
  130. )
  131. )
  132. dim: Scalar_String(
  133. value: c
  134. )
  135. )
  136. args: array(
  137. )
  138. )
  139. )
  140. 8: Stmt_Expression(
  141. expr: Expr_New(
  142. class: Expr_ArrayDimFetch(
  143. var: Expr_PropertyFetch(
  144. var: Expr_Variable(
  145. name: a
  146. )
  147. name: Identifier(
  148. name: b
  149. )
  150. )
  151. dim: Scalar_String(
  152. value: c
  153. )
  154. )
  155. args: array(
  156. )
  157. )
  158. )
  159. 9: Stmt_Expression(
  160. expr: Expr_New(
  161. class: Name(
  162. name: A
  163. )
  164. args: array(
  165. )
  166. )
  167. comments: array(
  168. 0: // test regression introduces by new dereferencing syntax
  169. )
  170. )
  171. )