arrow_function.test 6.7 KB

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