arrow_function.test 6.6 KB

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