@flarum/cli 2.0.0-beta.9 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +178 -48
  3. package/bin/run +2 -1
  4. package/bin/splitsh-lite-darwin +0 -0
  5. package/bin/splitsh-lite-linux +0 -0
  6. package/boilerplate/skeleton/extension/.gitattributes +16 -14
  7. package/boilerplate/skeleton/extension/.github/workflows/backend.yml +2 -6
  8. package/boilerplate/skeleton/extension/.github/workflows/frontend.yml +5 -6
  9. package/boilerplate/skeleton/extension/.github/workflows/phpstan.yml +12 -0
  10. package/boilerplate/skeleton/extension/LICENSE.md +1 -1
  11. package/boilerplate/skeleton/extension/README.md +1 -1
  12. package/boilerplate/skeleton/extension/composer.json +13 -7
  13. package/boilerplate/skeleton/extension/extend.php +2 -2
  14. package/boilerplate/skeleton/extension/gitignore +1 -0
  15. package/boilerplate/skeleton/extension/js/admin.ts +2 -0
  16. package/boilerplate/skeleton/extension/js/forum.ts +2 -0
  17. package/boilerplate/skeleton/extension/js/jest.config.cjs +1 -0
  18. package/boilerplate/skeleton/extension/js/package.json +11 -4
  19. package/boilerplate/skeleton/extension/js/src/admin/extend.js +8 -0
  20. package/boilerplate/skeleton/extension/js/src/admin/extend.ts +8 -0
  21. package/boilerplate/skeleton/extension/js/src/admin/index.js +2 -0
  22. package/boilerplate/skeleton/extension/js/src/admin/index.ts +7 -0
  23. package/boilerplate/skeleton/extension/js/src/common/extend.js +5 -0
  24. package/boilerplate/skeleton/extension/js/src/common/extend.ts +5 -0
  25. package/boilerplate/skeleton/extension/js/src/common/index.ts +5 -0
  26. package/boilerplate/skeleton/extension/js/src/forum/extend.js +8 -0
  27. package/boilerplate/skeleton/extension/js/src/forum/extend.ts +8 -0
  28. package/boilerplate/skeleton/extension/js/src/forum/index.js +2 -0
  29. package/boilerplate/skeleton/extension/js/src/forum/index.ts +7 -0
  30. package/boilerplate/skeleton/extension/js/tests/unit/.gitkeep +0 -0
  31. package/boilerplate/skeleton/extension/js/tsconfig.json +10 -2
  32. package/boilerplate/skeleton/extension/js/tsconfig.test.json +10 -0
  33. package/boilerplate/skeleton/extension/locale/en.yml +1 -1
  34. package/boilerplate/skeleton/extension/phpstan.neon +12 -0
  35. package/boilerplate/skeleton/extension/tests/phpunit.integration.xml +6 -7
  36. package/boilerplate/skeleton/extension/tests/phpunit.unit.xml +5 -10
  37. package/boilerplate/stubs/backend/advanced-api-resource.php +85 -0
  38. package/boilerplate/stubs/backend/api-resource.php +73 -0
  39. package/boilerplate/stubs/backend/command.php +2 -2
  40. package/boilerplate/stubs/backend/controller.php +19 -0
  41. package/boilerplate/stubs/backend/event-listener.php +1 -1
  42. package/boilerplate/stubs/backend/filter.php +25 -0
  43. package/boilerplate/stubs/backend/handler/command.php +6 -20
  44. package/boilerplate/stubs/backend/handler/handler.php +6 -14
  45. package/boilerplate/stubs/backend/integration-test.php +10 -7
  46. package/boilerplate/stubs/backend/job.php +6 -11
  47. package/boilerplate/stubs/backend/mail-driver.php +36 -0
  48. package/boilerplate/stubs/backend/middleware.php +19 -0
  49. package/boilerplate/stubs/backend/model.php +1 -1
  50. package/boilerplate/stubs/backend/notification-blueprint.php +42 -0
  51. package/boilerplate/stubs/backend/notification-driver.php +32 -0
  52. package/boilerplate/stubs/backend/policy.php +1 -1
  53. package/boilerplate/stubs/backend/post-type.php +35 -0
  54. package/boilerplate/stubs/backend/repository.php +2 -10
  55. package/boilerplate/stubs/backend/search/driver.php +13 -0
  56. package/boilerplate/stubs/backend/search/searcher.php +41 -0
  57. package/boilerplate/stubs/backend/service-provider.php +1 -1
  58. package/boilerplate/stubs/backend/validator.php +1 -1
  59. package/boilerplate/stubs/frontend/component.js +1 -1
  60. package/boilerplate/stubs/frontend/forum-page.js +68 -0
  61. package/boilerplate/stubs/frontend/gambit/boolean.js +12 -0
  62. package/boilerplate/stubs/frontend/gambit/key-value.js +16 -0
  63. package/boilerplate/stubs/frontend/modal.js +1 -1
  64. package/boilerplate/stubs/frontend/model.js +1 -1
  65. package/boilerplate/stubs/frontend/notification.js +22 -0
  66. package/boilerplate/stubs/frontend/post-type.js +13 -0
  67. package/boilerplate/stubs/migration.php +1 -1
  68. package/boilerplate/stubs/views/email/html/information.blade.php +8 -0
  69. package/boilerplate/stubs/views/email/html/notification.blade.php +8 -0
  70. package/boilerplate/stubs/views/email/plain/information.blade.php +7 -0
  71. package/boilerplate/stubs/views/email/plain/notification.blade.php +6 -0
  72. package/lib/base-command.d.ts +22 -6
  73. package/lib/base-command.js +114 -56
  74. package/lib/boilersmith/io.d.ts +33 -11
  75. package/lib/boilersmith/io.js +32 -17
  76. package/lib/boilersmith/paths.d.ts +3 -3
  77. package/lib/boilersmith/paths.js +7 -7
  78. package/lib/boilersmith/scaffolding/audit-step-factory.js +12 -12
  79. package/lib/boilersmith/scaffolding/infra-step-factory.js +2 -2
  80. package/lib/boilersmith/scaffolding/init-step-factory.js +5 -5
  81. package/lib/boilersmith/scaffolding/module.d.ts +30 -10
  82. package/lib/boilersmith/scaffolding/module.js +61 -19
  83. package/lib/boilersmith/scaffolding/scaffolder.d.ts +4 -1
  84. package/lib/boilersmith/scaffolding/scaffolder.js +33 -33
  85. package/lib/boilersmith/scaffolding/template-param.d.ts +2 -2
  86. package/lib/boilersmith/scaffolding/template-param.js +2 -2
  87. package/lib/boilersmith/step-manager.d.ts +15 -11
  88. package/lib/boilersmith/step-manager.js +45 -29
  89. package/lib/boilersmith/steps/stub-base.js +4 -4
  90. package/lib/boilersmith/utils/clone-and-fill.js +1 -1
  91. package/lib/boilersmith/utils/commit-async.d.ts +2 -0
  92. package/lib/boilersmith/utils/commit-async.js +15 -0
  93. package/lib/boilersmith/utils/json-leaf-paths.d.ts +2 -2
  94. package/lib/boilersmith/utils/read-tpl.js +2 -2
  95. package/lib/commands/audit/infra.d.ts +2 -5
  96. package/lib/commands/audit/infra.js +31 -9
  97. package/lib/commands/infra.d.ts +2 -10
  98. package/lib/commands/infra.js +20 -14
  99. package/lib/commands/init.d.ts +2 -5
  100. package/lib/commands/init.js +7 -5
  101. package/lib/commands/make/backend/{api-serializer.d.ts → api-resource.d.ts} +2 -5
  102. package/lib/commands/make/backend/api-resource.js +26 -0
  103. package/lib/commands/make/backend/command.d.ts +1 -4
  104. package/lib/commands/make/backend/command.js +3 -4
  105. package/lib/commands/make/backend/{api-controller.d.ts → controller.d.ts} +2 -5
  106. package/lib/commands/make/backend/controller.js +31 -0
  107. package/lib/commands/make/backend/event-listener.d.ts +1 -4
  108. package/lib/commands/make/backend/event-listener.js +2 -3
  109. package/lib/commands/make/backend/{api-serializer-attributes.d.ts → filter.d.ts} +3 -6
  110. package/lib/commands/make/backend/filter.js +26 -0
  111. package/lib/commands/make/backend/handler.d.ts +2 -5
  112. package/lib/commands/make/backend/handler.js +8 -11
  113. package/lib/commands/make/backend/integration-test.d.ts +1 -4
  114. package/lib/commands/make/backend/integration-test.js +4 -6
  115. package/lib/commands/make/backend/job.d.ts +1 -4
  116. package/lib/commands/make/backend/job.js +2 -2
  117. package/lib/commands/make/backend/mail-driver.d.ts +12 -0
  118. package/lib/commands/make/backend/mail-driver.js +29 -0
  119. package/lib/commands/make/backend/middleware.d.ts +11 -0
  120. package/lib/commands/make/backend/middleware.js +26 -0
  121. package/lib/commands/make/backend/migration.d.ts +1 -4
  122. package/lib/commands/make/backend/migration.js +10 -4
  123. package/lib/commands/make/backend/model.d.ts +6 -7
  124. package/lib/commands/make/backend/model.js +69 -449
  125. package/lib/commands/make/backend/notification-blueprint.d.ts +12 -0
  126. package/lib/commands/make/backend/notification-blueprint.js +29 -0
  127. package/lib/commands/make/backend/notification-driver.d.ts +12 -0
  128. package/lib/commands/make/backend/notification-driver.js +29 -0
  129. package/lib/commands/make/backend/policy.d.ts +1 -4
  130. package/lib/commands/make/backend/policy.js +2 -3
  131. package/lib/commands/make/backend/post-type.d.ts +12 -0
  132. package/lib/commands/make/backend/post-type.js +29 -0
  133. package/lib/commands/make/backend/repository.d.ts +1 -4
  134. package/lib/commands/make/backend/repository.js +1 -1
  135. package/lib/commands/make/backend/route.d.ts +1 -4
  136. package/lib/commands/make/backend/route.js +2 -3
  137. package/lib/commands/make/backend/search-driver.d.ts +11 -0
  138. package/lib/commands/make/backend/search-driver.js +51 -0
  139. package/lib/commands/make/backend/service-provider.d.ts +1 -4
  140. package/lib/commands/make/backend/service-provider.js +3 -4
  141. package/lib/commands/make/backend/validator.d.ts +1 -4
  142. package/lib/commands/make/backend/validator.js +2 -2
  143. package/lib/commands/make/frontend/component.d.ts +4 -5
  144. package/lib/commands/make/frontend/component.js +7 -2
  145. package/lib/commands/make/frontend/forum-page.d.ts +11 -0
  146. package/lib/commands/make/frontend/forum-page.js +92 -0
  147. package/lib/commands/make/frontend/gambit.d.ts +11 -0
  148. package/lib/commands/make/frontend/gambit.js +30 -0
  149. package/lib/commands/make/frontend/modal.d.ts +1 -4
  150. package/lib/commands/make/frontend/modal.js +3 -2
  151. package/lib/commands/make/frontend/model.d.ts +6 -7
  152. package/lib/commands/make/frontend/model.js +27 -28
  153. package/lib/commands/make/frontend/notification.d.ts +12 -0
  154. package/lib/commands/make/frontend/notification.js +62 -0
  155. package/lib/commands/make/frontend/post-type.d.ts +12 -0
  156. package/lib/commands/make/frontend/post-type.js +59 -0
  157. package/lib/commands/make/locale.d.ts +11 -0
  158. package/lib/commands/make/locale.js +27 -0
  159. package/lib/commands/make/model.d.ts +12 -0
  160. package/lib/commands/make/model.js +29 -0
  161. package/lib/commands/make/notification.d.ts +11 -0
  162. package/lib/commands/make/notification.js +33 -0
  163. package/lib/commands/make/post-type.d.ts +11 -0
  164. package/lib/commands/make/post-type.js +31 -0
  165. package/lib/commands/monorepo/create.d.ts +12 -0
  166. package/lib/commands/monorepo/create.js +20 -0
  167. package/lib/commands/monorepo/split.d.ts +12 -0
  168. package/lib/commands/monorepo/split.js +19 -0
  169. package/lib/commands/update/js-imports.d.ts +1 -4
  170. package/lib/commands/update/js-imports.js +2 -3
  171. package/lib/commands/upgrade/2.0.d.ts +17 -0
  172. package/lib/commands/upgrade/2.0.js +113 -0
  173. package/lib/help.js +2 -2
  174. package/lib/providers/php-provider.d.ts +7 -1
  175. package/lib/providers/php-provider.js +18 -5
  176. package/lib/steps/extenders/{api-serializer.d.ts → api-resource.d.ts} +1 -1
  177. package/lib/steps/extenders/api-resource.js +38 -0
  178. package/lib/steps/extenders/base.d.ts +1 -1
  179. package/lib/steps/extenders/base.js +13 -1
  180. package/lib/steps/extenders/console-command.js +1 -1
  181. package/lib/steps/extenders/event.js +1 -1
  182. package/lib/steps/extenders/mail-driver.d.ts +5 -0
  183. package/lib/steps/extenders/mail-driver.js +58 -0
  184. package/lib/steps/extenders/middleware.d.ts +5 -0
  185. package/lib/steps/extenders/middleware.js +57 -0
  186. package/lib/steps/extenders/notification-driver.d.ts +5 -0
  187. package/lib/steps/extenders/notification-driver.js +58 -0
  188. package/lib/steps/extenders/notification-type.d.ts +5 -0
  189. package/lib/steps/extenders/notification-type.js +55 -0
  190. package/lib/steps/extenders/policy.js +1 -1
  191. package/lib/steps/extenders/post-type.d.ts +5 -0
  192. package/lib/steps/extenders/post-type.js +42 -0
  193. package/lib/steps/extenders/route.js +11 -2
  194. package/lib/steps/extenders/search-driver.d.ts +5 -0
  195. package/lib/steps/extenders/search-driver.js +38 -0
  196. package/lib/steps/extenders/search-filter.d.ts +5 -0
  197. package/lib/steps/extenders/search-filter.js +67 -0
  198. package/lib/steps/extenders/service-provider.js +1 -1
  199. package/lib/steps/gen-ext-scaffolder.d.ts +4 -4
  200. package/lib/steps/gen-ext-scaffolder.js +262 -56
  201. package/lib/steps/js/base.d.ts +14 -5
  202. package/lib/steps/js/base.js +101 -27
  203. package/lib/steps/js/model.d.ts +4 -7
  204. package/lib/steps/js/model.js +45 -19
  205. package/lib/steps/js/notification.d.ts +7 -0
  206. package/lib/steps/js/notification.js +58 -0
  207. package/lib/steps/js/post-type.d.ts +8 -0
  208. package/lib/steps/js/post-type.js +60 -0
  209. package/lib/steps/js/routes.d.ts +7 -0
  210. package/lib/steps/js/routes.js +63 -0
  211. package/lib/steps/js/search-driver-locale.d.ts +8 -0
  212. package/lib/steps/js/search-driver-locale.js +36 -0
  213. package/lib/steps/js/search-gambit.d.ts +7 -0
  214. package/lib/steps/js/search-gambit.js +51 -0
  215. package/lib/steps/locale/base.d.ts +32 -0
  216. package/lib/steps/locale/base.js +97 -0
  217. package/lib/steps/misc/composer.js +2 -2
  218. package/lib/steps/misc/git.d.ts +1 -1
  219. package/lib/steps/misc/git.js +3 -3
  220. package/lib/steps/misc/npm.d.ts +11 -0
  221. package/lib/steps/misc/npm.js +19 -0
  222. package/lib/steps/misc/yarn.js +2 -2
  223. package/lib/steps/monorepo/create.d.ts +19 -0
  224. package/lib/steps/monorepo/create.js +187 -0
  225. package/lib/steps/monorepo/split.d.ts +14 -0
  226. package/lib/steps/monorepo/split.js +99 -0
  227. package/lib/steps/stubs/backend/advanced-api-resource.d.ts +13 -0
  228. package/lib/steps/stubs/backend/advanced-api-resource.js +81 -0
  229. package/lib/steps/stubs/backend/{api-serializer.d.ts → api-resource.d.ts} +2 -2
  230. package/lib/steps/stubs/backend/{api-serializer.js → api-resource.js} +12 -9
  231. package/lib/steps/stubs/backend/command.d.ts +2 -21
  232. package/lib/steps/stubs/backend/command.js +15 -1
  233. package/lib/steps/stubs/backend/{api-controller.d.ts → controller.d.ts} +4 -14
  234. package/lib/steps/stubs/backend/controller.js +40 -0
  235. package/lib/steps/stubs/backend/event-listener.d.ts +1 -1
  236. package/lib/steps/stubs/backend/event-listener.js +3 -1
  237. package/lib/steps/stubs/backend/filter.d.ts +8 -0
  238. package/lib/steps/stubs/backend/filter.js +44 -0
  239. package/lib/steps/stubs/backend/handler-command.d.ts +2 -27
  240. package/lib/steps/stubs/backend/handler-command.js +3 -1
  241. package/lib/steps/stubs/backend/handler.d.ts +1 -1
  242. package/lib/steps/stubs/backend/handler.js +5 -1
  243. package/lib/steps/stubs/backend/integration-test.d.ts +1 -1
  244. package/lib/steps/stubs/backend/integration-test.js +1 -4
  245. package/lib/steps/stubs/backend/job.d.ts +1 -1
  246. package/lib/steps/stubs/backend/job.js +1 -0
  247. package/lib/steps/stubs/backend/mail-driver.d.ts +7 -0
  248. package/lib/steps/stubs/backend/mail-driver.js +30 -0
  249. package/lib/steps/stubs/backend/middleware.d.ts +22 -0
  250. package/lib/steps/stubs/backend/middleware.js +31 -0
  251. package/lib/steps/stubs/backend/migration.js +6 -3
  252. package/lib/steps/stubs/backend/model.d.ts +2 -24
  253. package/lib/steps/stubs/backend/model.js +3 -5
  254. package/lib/steps/stubs/backend/notification-blueprint.d.ts +7 -0
  255. package/lib/steps/stubs/backend/notification-blueprint.js +44 -0
  256. package/lib/steps/stubs/backend/notification-driver.d.ts +7 -0
  257. package/lib/steps/stubs/backend/notification-driver.js +30 -0
  258. package/lib/steps/stubs/backend/policy.d.ts +1 -1
  259. package/lib/steps/stubs/backend/policy.js +3 -1
  260. package/lib/steps/stubs/backend/post-type.d.ts +7 -0
  261. package/lib/steps/stubs/backend/post-type.js +44 -0
  262. package/lib/steps/stubs/backend/repository.d.ts +1 -1
  263. package/lib/steps/stubs/backend/repository.js +3 -1
  264. package/lib/steps/stubs/backend/search-driver-searcher.d.ts +24 -0
  265. package/lib/steps/stubs/backend/search-driver-searcher.js +32 -0
  266. package/lib/steps/stubs/backend/search-driver.d.ts +8 -0
  267. package/lib/steps/stubs/backend/search-driver.js +49 -0
  268. package/lib/steps/stubs/backend/service-provider.d.ts +1 -1
  269. package/lib/steps/stubs/backend/service-provider.js +1 -0
  270. package/lib/steps/stubs/backend/validator.d.ts +1 -1
  271. package/lib/steps/stubs/backend/validator.js +1 -0
  272. package/lib/steps/stubs/flarum-base.js +1 -1
  273. package/lib/steps/stubs/frontend/component.d.ts +0 -5
  274. package/lib/steps/stubs/frontend/component.js +1 -0
  275. package/lib/steps/stubs/frontend/forum-page.d.ts +25 -0
  276. package/lib/steps/stubs/frontend/forum-page.js +37 -0
  277. package/lib/steps/stubs/frontend/gambit.d.ts +7 -0
  278. package/lib/steps/stubs/frontend/gambit.js +50 -0
  279. package/lib/steps/stubs/frontend/modal.d.ts +0 -5
  280. package/lib/steps/stubs/frontend/modal.js +1 -0
  281. package/lib/steps/stubs/frontend/model.d.ts +8 -1
  282. package/lib/steps/stubs/frontend/model.js +6 -0
  283. package/lib/steps/stubs/frontend/notification.d.ts +11 -0
  284. package/lib/steps/stubs/frontend/notification.js +48 -0
  285. package/lib/steps/stubs/frontend/post-type.d.ts +11 -0
  286. package/lib/steps/stubs/frontend/post-type.js +48 -0
  287. package/lib/steps/stubs/js-base.js +12 -5
  288. package/lib/steps/stubs/php-base.js +13 -9
  289. package/lib/steps/update/js-imports.js +9 -3
  290. package/lib/steps/upgrade/twopointoh/backend/email-views.d.ts +18 -0
  291. package/lib/steps/upgrade/twopointoh/backend/email-views.js +81 -0
  292. package/lib/steps/upgrade/twopointoh/backend/filesystem.d.ts +8 -0
  293. package/lib/steps/upgrade/twopointoh/backend/filesystem.js +40 -0
  294. package/lib/steps/upgrade/twopointoh/backend/intervention-image.d.ts +8 -0
  295. package/lib/steps/upgrade/twopointoh/backend/intervention-image.js +44 -0
  296. package/lib/steps/upgrade/twopointoh/backend/json-api.d.ts +12 -0
  297. package/lib/steps/upgrade/twopointoh/backend/json-api.js +111 -0
  298. package/lib/steps/upgrade/twopointoh/backend/mailer.d.ts +8 -0
  299. package/lib/steps/upgrade/twopointoh/backend/mailer.js +37 -0
  300. package/lib/steps/upgrade/twopointoh/backend/misc.d.ts +8 -0
  301. package/lib/steps/upgrade/twopointoh/backend/misc.js +42 -0
  302. package/lib/steps/upgrade/twopointoh/backend/phpunit.d.ts +8 -0
  303. package/lib/steps/upgrade/twopointoh/backend/phpunit.js +52 -0
  304. package/lib/steps/upgrade/twopointoh/backend/search.d.ts +28 -0
  305. package/lib/steps/upgrade/twopointoh/backend/search.js +200 -0
  306. package/lib/steps/upgrade/twopointoh/base.d.ts +58 -0
  307. package/lib/steps/upgrade/twopointoh/base.js +284 -0
  308. package/lib/steps/upgrade/twopointoh/dependencies.d.ts +10 -0
  309. package/lib/steps/upgrade/twopointoh/dependencies.js +108 -0
  310. package/lib/steps/upgrade/twopointoh/frontend/code-splitting/usage-of-lazy-modules.d.ts +26 -0
  311. package/lib/steps/upgrade/twopointoh/frontend/code-splitting/usage-of-lazy-modules.js +418 -0
  312. package/lib/steps/upgrade/twopointoh/frontend/export-registry/compat.d.ts +12 -0
  313. package/lib/steps/upgrade/twopointoh/frontend/export-registry/compat.js +75 -0
  314. package/lib/steps/upgrade/twopointoh/frontend/export-registry/import-ext.d.ts +13 -0
  315. package/lib/steps/upgrade/twopointoh/frontend/export-registry/import-ext.js +126 -0
  316. package/lib/steps/upgrade/twopointoh/frontend/format.d.ts +8 -0
  317. package/lib/steps/upgrade/twopointoh/frontend/format.js +32 -0
  318. package/lib/steps/upgrade/twopointoh/frontend/misc.d.ts +17 -0
  319. package/lib/steps/upgrade/twopointoh/frontend/misc.js +433 -0
  320. package/lib/steps/upgrade/twopointoh/infra.d.ts +10 -0
  321. package/lib/steps/upgrade/twopointoh/infra.js +51 -0
  322. package/lib/steps/upgrade/twopointoh/less.d.ts +12 -0
  323. package/lib/steps/upgrade/twopointoh/less.js +217 -0
  324. package/lib/utils/add-extenders.d.ts +2 -0
  325. package/lib/utils/add-extenders.js +115 -0
  326. package/lib/utils/ast.d.ts +22 -0
  327. package/lib/utils/ast.js +235 -0
  328. package/lib/utils/composer.d.ts +2 -1
  329. package/lib/utils/migration.js +3 -1
  330. package/lib/utils/model-name.d.ts +1 -0
  331. package/lib/utils/model-name.js +7 -3
  332. package/lib/utils/monorepo.d.ts +24 -0
  333. package/lib/utils/monorepo.js +24 -0
  334. package/lib/utils/validation.d.ts +6 -1
  335. package/lib/utils/validation.js +15 -0
  336. package/oclif.manifest.json +1 -1
  337. package/package.json +27 -14
  338. package/php-subsystem/composer.json +11 -9
  339. package/php-subsystem/composer.lock +66 -71
  340. package/php-subsystem/index.php +41 -6
  341. package/php-subsystem/src/CustomPrettyPrinter.php +1 -1
  342. package/php-subsystem/src/ExtenderUtil.php +7 -13
  343. package/php-subsystem/src/NodeUtil.php +72 -0
  344. package/php-subsystem/src/NodeVisitors/AddExtender.php +28 -12
  345. package/php-subsystem/src/NodeVisitors/AddUses.php +24 -0
  346. package/php-subsystem/src/NodeVisitors/ChangeSignatures.php +200 -0
  347. package/php-subsystem/src/NodeVisitors/ReplaceUses.php +175 -0
  348. package/php-subsystem/src/Upgrade/Replacement.php +51 -0
  349. package/php-subsystem/src/Upgrade/ReplacementResult.php +17 -0
  350. package/php-subsystem/src/Upgrade/TwoPointOh/EmailViews.php +94 -0
  351. package/php-subsystem/src/Upgrade/TwoPointOh/Filesystem.php +88 -0
  352. package/php-subsystem/src/Upgrade/TwoPointOh/InterventionImage.php +86 -0
  353. package/php-subsystem/src/Upgrade/TwoPointOh/JsonApi.php +186 -0
  354. package/php-subsystem/src/Upgrade/TwoPointOh/Misc.php +564 -0
  355. package/php-subsystem/src/Upgrade/TwoPointOh/PhpUnit.php +241 -0
  356. package/php-subsystem/src/Upgrade/TwoPointOh/Search.php +589 -0
  357. package/php-subsystem/vendor/autoload.php +18 -0
  358. package/php-subsystem/vendor/bin/php-parse +119 -0
  359. package/php-subsystem/vendor/composer/ClassLoader.php +166 -32
  360. package/php-subsystem/vendor/composer/InstalledVersions.php +350 -209
  361. package/php-subsystem/vendor/composer/autoload_classmap.php +1 -1
  362. package/php-subsystem/vendor/composer/autoload_namespaces.php +1 -1
  363. package/php-subsystem/vendor/composer/autoload_psr4.php +1 -1
  364. package/php-subsystem/vendor/composer/autoload_real.php +3 -22
  365. package/php-subsystem/vendor/composer/installed.json +56 -61
  366. package/php-subsystem/vendor/composer/installed.php +29 -30
  367. package/php-subsystem/vendor/composer/platform_check.php +2 -2
  368. package/php-subsystem/vendor/nikic/php-parser/README.md +21 -13
  369. package/php-subsystem/vendor/nikic/php-parser/bin/php-parse +12 -11
  370. package/php-subsystem/vendor/nikic/php-parser/composer.json +41 -39
  371. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +58 -11
  372. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +54 -25
  373. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +11 -4
  374. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
  375. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  376. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +8 -9
  377. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +22 -5
  378. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +26 -7
  379. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +31 -13
  380. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
  381. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +69 -26
  382. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +47 -18
  383. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +6 -5
  384. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +25 -28
  385. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +31 -8
  386. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
  387. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Builder.php +2 -3
  388. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +85 -70
  389. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +119 -71
  390. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +1 -2
  391. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Comment.php +35 -67
  392. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
  393. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +17 -9
  394. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Error.php +24 -33
  395. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +6 -9
  396. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +2 -3
  397. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +2 -3
  398. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +11 -7
  399. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +36 -22
  400. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +24 -14
  401. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  402. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +63 -69
  403. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +15 -10
  404. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +74 -92
  405. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +11 -18
  406. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +10 -15
  407. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  408. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +19 -25
  409. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +6 -10
  410. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +22 -29
  411. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  412. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  413. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +6 -5
  414. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +10 -5
  415. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +70 -491
  416. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
  417. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +23 -24
  418. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +13 -14
  419. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  420. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +9 -10
  421. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +5 -7
  422. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  423. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  424. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +12 -13
  425. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  426. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +10 -11
  427. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +1 -39
  428. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
  429. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +35 -30
  430. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +9 -10
  431. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +2 -3
  432. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +2 -3
  433. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +2 -3
  434. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +2 -3
  435. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +2 -3
  436. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +2 -3
  437. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +2 -3
  438. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +2 -3
  439. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +2 -3
  440. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +2 -3
  441. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +2 -3
  442. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +2 -3
  443. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +2 -3
  444. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +7 -8
  445. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +9 -10
  446. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +4 -5
  447. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +4 -5
  448. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +4 -5
  449. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +4 -5
  450. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +4 -5
  451. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +4 -5
  452. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +4 -5
  453. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +4 -5
  454. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +4 -5
  455. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +4 -5
  456. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +4 -5
  457. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +4 -5
  458. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +4 -5
  459. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +4 -5
  460. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +4 -5
  461. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +4 -5
  462. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +4 -5
  463. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +4 -5
  464. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +4 -5
  465. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +4 -5
  466. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +4 -5
  467. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +4 -5
  468. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +4 -5
  469. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +4 -5
  470. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +4 -5
  471. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +4 -5
  472. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +4 -5
  473. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +8 -11
  474. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +7 -8
  475. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +7 -8
  476. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
  477. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +2 -3
  478. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +2 -3
  479. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +5 -6
  480. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +2 -3
  481. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +2 -3
  482. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +2 -3
  483. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +2 -3
  484. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +5 -6
  485. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +12 -12
  486. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +7 -8
  487. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +34 -27
  488. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +1 -32
  489. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +7 -8
  490. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +7 -8
  491. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +5 -6
  492. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +7 -8
  493. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +7 -8
  494. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +10 -11
  495. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +15 -12
  496. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +13 -14
  497. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
  498. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +7 -8
  499. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +12 -8
  500. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +8 -7
  501. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +18 -13
  502. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +17 -12
  503. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +18 -13
  504. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
  505. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +7 -8
  506. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +7 -8
  507. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +6 -7
  508. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +7 -8
  509. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +7 -8
  510. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
  511. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
  512. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +19 -14
  513. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
  514. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +12 -13
  515. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +6 -7
  516. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +7 -8
  517. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +7 -8
  518. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +6 -7
  519. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +7 -8
  520. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +10 -11
  521. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +1 -2
  522. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +6 -9
  523. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +13 -13
  524. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  525. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  526. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +8 -9
  527. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +8 -9
  528. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +8 -9
  529. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +80 -53
  530. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +10 -11
  531. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +47 -23
  532. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  533. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +1 -68
  534. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +1 -29
  535. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +1 -28
  536. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  537. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  538. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  539. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +1 -71
  540. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +4 -5
  541. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +4 -5
  542. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +4 -5
  543. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +4 -5
  544. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +4 -5
  545. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +4 -5
  546. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +4 -5
  547. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +4 -5
  548. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +4 -5
  549. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +44 -24
  550. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +1 -2
  551. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  552. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  553. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +8 -9
  554. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +10 -11
  555. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +11 -12
  556. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +33 -27
  557. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +15 -15
  558. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +66 -71
  559. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +48 -61
  560. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +7 -8
  561. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +8 -9
  562. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +1 -32
  563. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +12 -12
  564. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +9 -10
  565. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +7 -8
  566. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +9 -10
  567. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +7 -8
  568. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +11 -12
  569. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +17 -13
  570. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +7 -8
  571. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +7 -8
  572. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +19 -15
  573. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +20 -17
  574. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +31 -27
  575. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +7 -8
  576. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +7 -8
  577. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +16 -14
  578. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +7 -8
  579. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +18 -15
  580. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +7 -8
  581. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +13 -10
  582. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +7 -8
  583. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +11 -12
  584. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +4 -5
  585. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +35 -36
  586. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +1 -32
  587. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +8 -9
  588. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +1 -35
  589. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +8 -8
  590. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +9 -10
  591. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +8 -9
  592. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +12 -13
  593. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +9 -10
  594. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +3 -4
  595. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +10 -8
  596. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +11 -12
  597. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +7 -8
  598. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +1 -50
  599. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
  600. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +9 -10
  601. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +1 -2
  602. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +8 -11
  603. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  604. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +2 -3
  605. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  606. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node.php +24 -29
  607. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +20 -20
  608. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +169 -82
  609. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +28 -19
  610. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +71 -84
  611. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +4 -7
  612. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +1 -2
  613. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  614. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +4 -5
  615. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +6 -7
  616. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +40 -24
  617. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +2 -3
  618. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +8 -11
  619. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +59 -7
  620. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +1 -2
  621. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2011 -2058
  622. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
  623. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser.php +9 -3
  624. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +466 -248
  625. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +31 -33
  626. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
  627. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +419 -338
  628. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  629. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +587 -431
  630. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  631. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +63 -0
  632. package/boilerplate/stubs/backend/api-controller/create.php +0 -53
  633. package/boilerplate/stubs/backend/api-controller/delete.php +0 -52
  634. package/boilerplate/stubs/backend/api-controller/list.php +0 -61
  635. package/boilerplate/stubs/backend/api-controller/normal.php +0 -29
  636. package/boilerplate/stubs/backend/api-controller/show.php +0 -48
  637. package/boilerplate/stubs/backend/api-controller/update.php +0 -54
  638. package/boilerplate/stubs/backend/api-serializer.php +0 -36
  639. package/lib/commands/make/backend/api-controller.js +0 -27
  640. package/lib/commands/make/backend/api-serializer-attributes.js +0 -15
  641. package/lib/commands/make/backend/api-serializer.js +0 -15
  642. package/lib/steps/extenders/api-serializer.js +0 -77
  643. package/lib/steps/stubs/backend/api-controller.js +0 -62
  644. package/lib/steps/stubs/frontend/migration.js +0 -1
  645. package/php-subsystem/vendor/nikic/php-parser/.editorconfig +0 -9
  646. package/php-subsystem/vendor/nikic/php-parser/grammar/README.md +0 -30
  647. package/php-subsystem/vendor/nikic/php-parser/grammar/parser.template +0 -106
  648. package/php-subsystem/vendor/nikic/php-parser/grammar/php5.y +0 -1026
  649. package/php-subsystem/vendor/nikic/php-parser/grammar/php7.y +0 -1152
  650. package/php-subsystem/vendor/nikic/php-parser/grammar/phpyLang.php +0 -192
  651. package/php-subsystem/vendor/nikic/php-parser/grammar/rebuildParsers.php +0 -81
  652. package/php-subsystem/vendor/nikic/php-parser/grammar/tokens.template +0 -17
  653. package/php-subsystem/vendor/nikic/php-parser/grammar/tokens.y +0 -115
  654. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +0 -47
  655. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +0 -76
  656. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +0 -23
  657. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +0 -105
  658. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +0 -30
  659. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +0 -55
  660. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php +0 -2630
  661. package/php-subsystem/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +0 -145
  662. /package/{lib/steps/stubs/frontend/migration.d.ts → boilerplate/skeleton/extension/js/tests/integration/.gitkeep} +0 -0
  663. /package/boilerplate/skeleton/extension/js/{webpack.config.js → webpack.config.cjs} +0 -0
@@ -1,1026 +0,0 @@
1
- %pure_parser
2
- %expect 6
3
-
4
- %tokens
5
-
6
- %%
7
-
8
- start:
9
- top_statement_list { $$ = $this->handleNamespaces($1); }
10
- ;
11
-
12
- top_statement_list_ex:
13
- top_statement_list_ex top_statement { pushNormalizing($1, $2); }
14
- | /* empty */ { init(); }
15
- ;
16
-
17
- top_statement_list:
18
- top_statement_list_ex
19
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
20
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
21
- ;
22
-
23
- reserved_non_modifiers:
24
- T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
25
- | T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE
26
- | T_ENDWHILE | T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH
27
- | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
28
- | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
29
- | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
30
- | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
31
- | T_MATCH
32
- ;
33
-
34
- semi_reserved:
35
- reserved_non_modifiers
36
- | T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC
37
- ;
38
-
39
- identifier_ex:
40
- T_STRING { $$ = Node\Identifier[$1]; }
41
- | semi_reserved { $$ = Node\Identifier[$1]; }
42
- ;
43
-
44
- identifier:
45
- T_STRING { $$ = Node\Identifier[$1]; }
46
- ;
47
-
48
- reserved_non_modifiers_identifier:
49
- reserved_non_modifiers { $$ = Node\Identifier[$1]; }
50
- ;
51
-
52
- namespace_name:
53
- T_STRING { $$ = Name[$1]; }
54
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
55
- ;
56
-
57
- legacy_namespace_name:
58
- namespace_name { $$ = $1; }
59
- | T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
60
- ;
61
-
62
- plain_variable:
63
- T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
64
- ;
65
-
66
- top_statement:
67
- statement { $$ = $1; }
68
- | function_declaration_statement { $$ = $1; }
69
- | class_declaration_statement { $$ = $1; }
70
- | T_HALT_COMPILER
71
- { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
72
- | T_NAMESPACE namespace_name ';'
73
- { $$ = Stmt\Namespace_[$2, null];
74
- $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
75
- $this->checkNamespace($$); }
76
- | T_NAMESPACE namespace_name '{' top_statement_list '}'
77
- { $$ = Stmt\Namespace_[$2, $4];
78
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
79
- $this->checkNamespace($$); }
80
- | T_NAMESPACE '{' top_statement_list '}'
81
- { $$ = Stmt\Namespace_[null, $3];
82
- $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
83
- $this->checkNamespace($$); }
84
- | T_USE use_declarations ';' { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
85
- | T_USE use_type use_declarations ';' { $$ = Stmt\Use_[$3, $2]; }
86
- | group_use_declaration ';' { $$ = $1; }
87
- | T_CONST constant_declaration_list ';' { $$ = Stmt\Const_[$2]; }
88
- ;
89
-
90
- use_type:
91
- T_FUNCTION { $$ = Stmt\Use_::TYPE_FUNCTION; }
92
- | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; }
93
- ;
94
-
95
- group_use_declaration:
96
- T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
97
- { $$ = Stmt\GroupUse[$3, $6, $2]; }
98
- | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
99
- { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
100
- ;
101
-
102
- unprefixed_use_declarations:
103
- unprefixed_use_declarations ',' unprefixed_use_declaration
104
- { push($1, $3); }
105
- | unprefixed_use_declaration { init($1); }
106
- ;
107
-
108
- use_declarations:
109
- use_declarations ',' use_declaration { push($1, $3); }
110
- | use_declaration { init($1); }
111
- ;
112
-
113
- inline_use_declarations:
114
- inline_use_declarations ',' inline_use_declaration { push($1, $3); }
115
- | inline_use_declaration { init($1); }
116
- ;
117
-
118
- unprefixed_use_declaration:
119
- namespace_name
120
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
121
- | namespace_name T_AS identifier
122
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
123
- ;
124
-
125
- use_declaration:
126
- legacy_namespace_name
127
- { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
128
- | legacy_namespace_name T_AS identifier
129
- { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
130
- ;
131
-
132
- inline_use_declaration:
133
- unprefixed_use_declaration { $$ = $1; $$->type = Stmt\Use_::TYPE_NORMAL; }
134
- | use_type unprefixed_use_declaration { $$ = $2; $$->type = $1; }
135
- ;
136
-
137
- constant_declaration_list:
138
- constant_declaration_list ',' constant_declaration { push($1, $3); }
139
- | constant_declaration { init($1); }
140
- ;
141
-
142
- constant_declaration:
143
- identifier '=' static_scalar { $$ = Node\Const_[$1, $3]; }
144
- ;
145
-
146
- class_const_list:
147
- class_const_list ',' class_const { push($1, $3); }
148
- | class_const { init($1); }
149
- ;
150
-
151
- class_const:
152
- identifier_ex '=' static_scalar { $$ = Node\Const_[$1, $3]; }
153
- ;
154
-
155
- inner_statement_list_ex:
156
- inner_statement_list_ex inner_statement { pushNormalizing($1, $2); }
157
- | /* empty */ { init(); }
158
- ;
159
-
160
- inner_statement_list:
161
- inner_statement_list_ex
162
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
163
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
164
- ;
165
-
166
- inner_statement:
167
- statement { $$ = $1; }
168
- | function_declaration_statement { $$ = $1; }
169
- | class_declaration_statement { $$ = $1; }
170
- | T_HALT_COMPILER
171
- { throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
172
- ;
173
-
174
- non_empty_statement:
175
- '{' inner_statement_list '}'
176
- {
177
- if ($2) {
178
- $$ = $2; prependLeadingComments($$);
179
- } else {
180
- makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
181
- if (null === $$) { $$ = array(); }
182
- }
183
- }
184
- | T_IF parentheses_expr statement elseif_list else_single
185
- { $$ = Stmt\If_[$2, ['stmts' => toArray($3), 'elseifs' => $4, 'else' => $5]]; }
186
- | T_IF parentheses_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
187
- { $$ = Stmt\If_[$2, ['stmts' => $4, 'elseifs' => $5, 'else' => $6]]; }
188
- | T_WHILE parentheses_expr while_statement { $$ = Stmt\While_[$2, $3]; }
189
- | T_DO statement T_WHILE parentheses_expr ';' { $$ = Stmt\Do_ [$4, toArray($2)]; }
190
- | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
191
- { $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
192
- | T_SWITCH parentheses_expr switch_case_list { $$ = Stmt\Switch_[$2, $3]; }
193
- | T_BREAK ';' { $$ = Stmt\Break_[null]; }
194
- | T_BREAK expr ';' { $$ = Stmt\Break_[$2]; }
195
- | T_CONTINUE ';' { $$ = Stmt\Continue_[null]; }
196
- | T_CONTINUE expr ';' { $$ = Stmt\Continue_[$2]; }
197
- | T_RETURN ';' { $$ = Stmt\Return_[null]; }
198
- | T_RETURN expr ';' { $$ = Stmt\Return_[$2]; }
199
- | T_GLOBAL global_var_list ';' { $$ = Stmt\Global_[$2]; }
200
- | T_STATIC static_var_list ';' { $$ = Stmt\Static_[$2]; }
201
- | T_ECHO expr_list ';' { $$ = Stmt\Echo_[$2]; }
202
- | T_INLINE_HTML { $$ = Stmt\InlineHTML[$1]; }
203
- | yield_expr ';' { $$ = Stmt\Expression[$1]; }
204
- | expr ';' { $$ = Stmt\Expression[$1]; }
205
- | T_UNSET '(' variables_list ')' ';' { $$ = Stmt\Unset_[$3]; }
206
- | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
207
- { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
208
- | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement
209
- { $$ = Stmt\Foreach_[$3, $7[0], ['keyVar' => $5, 'byRef' => $7[1], 'stmts' => $9]]; }
210
- | T_DECLARE '(' declare_list ')' declare_statement { $$ = Stmt\Declare_[$3, $5]; }
211
- | T_TRY '{' inner_statement_list '}' catches optional_finally
212
- { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
213
- | T_THROW expr ';' { $$ = Stmt\Throw_[$2]; }
214
- | T_GOTO identifier ';' { $$ = Stmt\Goto_[$2]; }
215
- | identifier ':' { $$ = Stmt\Label[$1]; }
216
- | expr error { $$ = Stmt\Expression[$1]; }
217
- | error { $$ = array(); /* means: no statement */ }
218
- ;
219
-
220
- statement:
221
- non_empty_statement { $$ = $1; }
222
- | ';'
223
- { makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
224
- if ($$ === null) $$ = array(); /* means: no statement */ }
225
- ;
226
-
227
- catches:
228
- /* empty */ { init(); }
229
- | catches catch { push($1, $2); }
230
- ;
231
-
232
- catch:
233
- T_CATCH '(' name plain_variable ')' '{' inner_statement_list '}'
234
- { $$ = Stmt\Catch_[array($3), $4, $7]; }
235
- ;
236
-
237
- optional_finally:
238
- /* empty */ { $$ = null; }
239
- | T_FINALLY '{' inner_statement_list '}' { $$ = Stmt\Finally_[$3]; }
240
- ;
241
-
242
- variables_list:
243
- variable { init($1); }
244
- | variables_list ',' variable { push($1, $3); }
245
- ;
246
-
247
- optional_ref:
248
- /* empty */ { $$ = false; }
249
- | '&' { $$ = true; }
250
- ;
251
-
252
- optional_ellipsis:
253
- /* empty */ { $$ = false; }
254
- | T_ELLIPSIS { $$ = true; }
255
- ;
256
-
257
- function_declaration_statement:
258
- T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type '{' inner_statement_list '}'
259
- { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $9]]; }
260
- ;
261
-
262
- class_declaration_statement:
263
- class_entry_type identifier extends_from implements_list '{' class_statement_list '}'
264
- { $$ = Stmt\Class_[$2, ['type' => $1, 'extends' => $3, 'implements' => $4, 'stmts' => $6]];
265
- $this->checkClass($$, #2); }
266
- | T_INTERFACE identifier interface_extends_list '{' class_statement_list '}'
267
- { $$ = Stmt\Interface_[$2, ['extends' => $3, 'stmts' => $5]];
268
- $this->checkInterface($$, #2); }
269
- | T_TRAIT identifier '{' class_statement_list '}'
270
- { $$ = Stmt\Trait_[$2, ['stmts' => $4]]; }
271
- ;
272
-
273
- class_entry_type:
274
- T_CLASS { $$ = 0; }
275
- | T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
276
- | T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
277
- ;
278
-
279
- extends_from:
280
- /* empty */ { $$ = null; }
281
- | T_EXTENDS class_name { $$ = $2; }
282
- ;
283
-
284
- interface_extends_list:
285
- /* empty */ { $$ = array(); }
286
- | T_EXTENDS class_name_list { $$ = $2; }
287
- ;
288
-
289
- implements_list:
290
- /* empty */ { $$ = array(); }
291
- | T_IMPLEMENTS class_name_list { $$ = $2; }
292
- ;
293
-
294
- class_name_list:
295
- class_name { init($1); }
296
- | class_name_list ',' class_name { push($1, $3); }
297
- ;
298
-
299
- for_statement:
300
- statement { $$ = toArray($1); }
301
- | ':' inner_statement_list T_ENDFOR ';' { $$ = $2; }
302
- ;
303
-
304
- foreach_statement:
305
- statement { $$ = toArray($1); }
306
- | ':' inner_statement_list T_ENDFOREACH ';' { $$ = $2; }
307
- ;
308
-
309
- declare_statement:
310
- non_empty_statement { $$ = toArray($1); }
311
- | ';' { $$ = null; }
312
- | ':' inner_statement_list T_ENDDECLARE ';' { $$ = $2; }
313
- ;
314
-
315
- declare_list:
316
- declare_list_element { init($1); }
317
- | declare_list ',' declare_list_element { push($1, $3); }
318
- ;
319
-
320
- declare_list_element:
321
- identifier '=' static_scalar { $$ = Stmt\DeclareDeclare[$1, $3]; }
322
- ;
323
-
324
- switch_case_list:
325
- '{' case_list '}' { $$ = $2; }
326
- | '{' ';' case_list '}' { $$ = $3; }
327
- | ':' case_list T_ENDSWITCH ';' { $$ = $2; }
328
- | ':' ';' case_list T_ENDSWITCH ';' { $$ = $3; }
329
- ;
330
-
331
- case_list:
332
- /* empty */ { init(); }
333
- | case_list case { push($1, $2); }
334
- ;
335
-
336
- case:
337
- T_CASE expr case_separator inner_statement_list_ex { $$ = Stmt\Case_[$2, $4]; }
338
- | T_DEFAULT case_separator inner_statement_list_ex { $$ = Stmt\Case_[null, $3]; }
339
- ;
340
-
341
- case_separator:
342
- ':'
343
- | ';'
344
- ;
345
-
346
- while_statement:
347
- statement { $$ = toArray($1); }
348
- | ':' inner_statement_list T_ENDWHILE ';' { $$ = $2; }
349
- ;
350
-
351
- elseif_list:
352
- /* empty */ { init(); }
353
- | elseif_list elseif { push($1, $2); }
354
- ;
355
-
356
- elseif:
357
- T_ELSEIF parentheses_expr statement { $$ = Stmt\ElseIf_[$2, toArray($3)]; }
358
- ;
359
-
360
- new_elseif_list:
361
- /* empty */ { init(); }
362
- | new_elseif_list new_elseif { push($1, $2); }
363
- ;
364
-
365
- new_elseif:
366
- T_ELSEIF parentheses_expr ':' inner_statement_list { $$ = Stmt\ElseIf_[$2, $4]; }
367
- ;
368
-
369
- else_single:
370
- /* empty */ { $$ = null; }
371
- | T_ELSE statement { $$ = Stmt\Else_[toArray($2)]; }
372
- ;
373
-
374
- new_else_single:
375
- /* empty */ { $$ = null; }
376
- | T_ELSE ':' inner_statement_list { $$ = Stmt\Else_[$3]; }
377
- ;
378
-
379
- foreach_variable:
380
- variable { $$ = array($1, false); }
381
- | '&' variable { $$ = array($2, true); }
382
- | list_expr { $$ = array($1, false); }
383
- ;
384
-
385
- parameter_list:
386
- non_empty_parameter_list { $$ = $1; }
387
- | /* empty */ { $$ = array(); }
388
- ;
389
-
390
- non_empty_parameter_list:
391
- parameter { init($1); }
392
- | non_empty_parameter_list ',' parameter { push($1, $3); }
393
- ;
394
-
395
- parameter:
396
- optional_param_type optional_ref optional_ellipsis plain_variable
397
- { $$ = Node\Param[$4, null, $1, $2, $3]; $this->checkParam($$); }
398
- | optional_param_type optional_ref optional_ellipsis plain_variable '=' static_scalar
399
- { $$ = Node\Param[$4, $6, $1, $2, $3]; $this->checkParam($$); }
400
- ;
401
-
402
- type:
403
- name { $$ = $1; }
404
- | T_ARRAY { $$ = Node\Identifier['array']; }
405
- | T_CALLABLE { $$ = Node\Identifier['callable']; }
406
- ;
407
-
408
- optional_param_type:
409
- /* empty */ { $$ = null; }
410
- | type { $$ = $1; }
411
- ;
412
-
413
- optional_return_type:
414
- /* empty */ { $$ = null; }
415
- | ':' type { $$ = $2; }
416
- ;
417
-
418
- argument_list:
419
- '(' ')' { $$ = array(); }
420
- | '(' non_empty_argument_list ')' { $$ = $2; }
421
- | '(' yield_expr ')' { $$ = array(Node\Arg[$2, false, false]); }
422
- ;
423
-
424
- non_empty_argument_list:
425
- argument { init($1); }
426
- | non_empty_argument_list ',' argument { push($1, $3); }
427
- ;
428
-
429
- argument:
430
- expr { $$ = Node\Arg[$1, false, false]; }
431
- | '&' variable { $$ = Node\Arg[$2, true, false]; }
432
- | T_ELLIPSIS expr { $$ = Node\Arg[$2, false, true]; }
433
- ;
434
-
435
- global_var_list:
436
- global_var_list ',' global_var { push($1, $3); }
437
- | global_var { init($1); }
438
- ;
439
-
440
- global_var:
441
- plain_variable { $$ = $1; }
442
- | '$' variable { $$ = Expr\Variable[$2]; }
443
- | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
444
- ;
445
-
446
- static_var_list:
447
- static_var_list ',' static_var { push($1, $3); }
448
- | static_var { init($1); }
449
- ;
450
-
451
- static_var:
452
- plain_variable { $$ = Stmt\StaticVar[$1, null]; }
453
- | plain_variable '=' static_scalar { $$ = Stmt\StaticVar[$1, $3]; }
454
- ;
455
-
456
- class_statement_list_ex:
457
- class_statement_list_ex class_statement { if ($2 !== null) { push($1, $2); } }
458
- | /* empty */ { init(); }
459
- ;
460
-
461
- class_statement_list:
462
- class_statement_list_ex
463
- { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
464
- if ($nop !== null) { $1[] = $nop; } $$ = $1; }
465
- ;
466
-
467
- class_statement:
468
- variable_modifiers property_declaration_list ';'
469
- { $$ = Stmt\Property[$1, $2]; $this->checkProperty($$, #1); }
470
- | T_CONST class_const_list ';' { $$ = Stmt\ClassConst[$2, 0]; }
471
- | method_modifiers T_FUNCTION optional_ref identifier_ex '(' parameter_list ')' optional_return_type method_body
472
- { $$ = Stmt\ClassMethod[$4, ['type' => $1, 'byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9]];
473
- $this->checkClassMethod($$, #1); }
474
- | T_USE class_name_list trait_adaptations { $$ = Stmt\TraitUse[$2, $3]; }
475
- ;
476
-
477
- trait_adaptations:
478
- ';' { $$ = array(); }
479
- | '{' trait_adaptation_list '}' { $$ = $2; }
480
- ;
481
-
482
- trait_adaptation_list:
483
- /* empty */ { init(); }
484
- | trait_adaptation_list trait_adaptation { push($1, $2); }
485
- ;
486
-
487
- trait_adaptation:
488
- trait_method_reference_fully_qualified T_INSTEADOF class_name_list ';'
489
- { $$ = Stmt\TraitUseAdaptation\Precedence[$1[0], $1[1], $3]; }
490
- | trait_method_reference T_AS member_modifier identifier_ex ';'
491
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, $4]; }
492
- | trait_method_reference T_AS member_modifier ';'
493
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, null]; }
494
- | trait_method_reference T_AS identifier ';'
495
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
496
- | trait_method_reference T_AS reserved_non_modifiers_identifier ';'
497
- { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
498
- ;
499
-
500
- trait_method_reference_fully_qualified:
501
- name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = array($1, $3); }
502
- ;
503
- trait_method_reference:
504
- trait_method_reference_fully_qualified { $$ = $1; }
505
- | identifier_ex { $$ = array(null, $1); }
506
- ;
507
-
508
- method_body:
509
- ';' /* abstract method */ { $$ = null; }
510
- | '{' inner_statement_list '}' { $$ = $2; }
511
- ;
512
-
513
- variable_modifiers:
514
- non_empty_member_modifiers { $$ = $1; }
515
- | T_VAR { $$ = 0; }
516
- ;
517
-
518
- method_modifiers:
519
- /* empty */ { $$ = 0; }
520
- | non_empty_member_modifiers { $$ = $1; }
521
- ;
522
-
523
- non_empty_member_modifiers:
524
- member_modifier { $$ = $1; }
525
- | non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
526
- ;
527
-
528
- member_modifier:
529
- T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
530
- | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
531
- | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
532
- | T_STATIC { $$ = Stmt\Class_::MODIFIER_STATIC; }
533
- | T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
534
- | T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
535
- ;
536
-
537
- property_declaration_list:
538
- property_declaration { init($1); }
539
- | property_declaration_list ',' property_declaration { push($1, $3); }
540
- ;
541
-
542
- property_decl_name:
543
- T_VARIABLE { $$ = Node\VarLikeIdentifier[parseVar($1)]; }
544
- ;
545
-
546
- property_declaration:
547
- property_decl_name { $$ = Stmt\PropertyProperty[$1, null]; }
548
- | property_decl_name '=' static_scalar { $$ = Stmt\PropertyProperty[$1, $3]; }
549
- ;
550
-
551
- expr_list:
552
- expr_list ',' expr { push($1, $3); }
553
- | expr { init($1); }
554
- ;
555
-
556
- for_expr:
557
- /* empty */ { $$ = array(); }
558
- | expr_list { $$ = $1; }
559
- ;
560
-
561
- expr:
562
- variable { $$ = $1; }
563
- | list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
564
- | variable '=' expr { $$ = Expr\Assign[$1, $3]; }
565
- | variable '=' '&' variable { $$ = Expr\AssignRef[$1, $4]; }
566
- | variable '=' '&' new_expr { $$ = Expr\AssignRef[$1, $4]; }
567
- | new_expr { $$ = $1; }
568
- | T_CLONE expr { $$ = Expr\Clone_[$2]; }
569
- | variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
570
- | variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
571
- | variable T_MUL_EQUAL expr { $$ = Expr\AssignOp\Mul [$1, $3]; }
572
- | variable T_DIV_EQUAL expr { $$ = Expr\AssignOp\Div [$1, $3]; }
573
- | variable T_CONCAT_EQUAL expr { $$ = Expr\AssignOp\Concat [$1, $3]; }
574
- | variable T_MOD_EQUAL expr { $$ = Expr\AssignOp\Mod [$1, $3]; }
575
- | variable T_AND_EQUAL expr { $$ = Expr\AssignOp\BitwiseAnd[$1, $3]; }
576
- | variable T_OR_EQUAL expr { $$ = Expr\AssignOp\BitwiseOr [$1, $3]; }
577
- | variable T_XOR_EQUAL expr { $$ = Expr\AssignOp\BitwiseXor[$1, $3]; }
578
- | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
579
- | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
580
- | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; }
581
- | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; }
582
- | variable T_INC { $$ = Expr\PostInc[$1]; }
583
- | T_INC variable { $$ = Expr\PreInc [$2]; }
584
- | variable T_DEC { $$ = Expr\PostDec[$1]; }
585
- | T_DEC variable { $$ = Expr\PreDec [$2]; }
586
- | expr T_BOOLEAN_OR expr { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
587
- | expr T_BOOLEAN_AND expr { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
588
- | expr T_LOGICAL_OR expr { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
589
- | expr T_LOGICAL_AND expr { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
590
- | expr T_LOGICAL_XOR expr { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
591
- | expr '|' expr { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
592
- | expr '&' expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
593
- | expr '^' expr { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
594
- | expr '.' expr { $$ = Expr\BinaryOp\Concat [$1, $3]; }
595
- | expr '+' expr { $$ = Expr\BinaryOp\Plus [$1, $3]; }
596
- | expr '-' expr { $$ = Expr\BinaryOp\Minus [$1, $3]; }
597
- | expr '*' expr { $$ = Expr\BinaryOp\Mul [$1, $3]; }
598
- | expr '/' expr { $$ = Expr\BinaryOp\Div [$1, $3]; }
599
- | expr '%' expr { $$ = Expr\BinaryOp\Mod [$1, $3]; }
600
- | expr T_SL expr { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
601
- | expr T_SR expr { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
602
- | expr T_POW expr { $$ = Expr\BinaryOp\Pow [$1, $3]; }
603
- | '+' expr %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
604
- | '-' expr %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
605
- | '!' expr { $$ = Expr\BooleanNot[$2]; }
606
- | '~' expr { $$ = Expr\BitwiseNot[$2]; }
607
- | expr T_IS_IDENTICAL expr { $$ = Expr\BinaryOp\Identical [$1, $3]; }
608
- | expr T_IS_NOT_IDENTICAL expr { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
609
- | expr T_IS_EQUAL expr { $$ = Expr\BinaryOp\Equal [$1, $3]; }
610
- | expr T_IS_NOT_EQUAL expr { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
611
- | expr T_SPACESHIP expr { $$ = Expr\BinaryOp\Spaceship [$1, $3]; }
612
- | expr '<' expr { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
613
- | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
614
- | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
615
- | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
616
- | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
617
- | parentheses_expr { $$ = $1; }
618
- /* we need a separate '(' new_expr ')' rule to avoid problems caused by a s/r conflict */
619
- | '(' new_expr ')' { $$ = $2; }
620
- | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
621
- | expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
622
- | expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
623
- | T_ISSET '(' variables_list ')' { $$ = Expr\Isset_[$3]; }
624
- | T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
625
- | T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
626
- | T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
627
- | T_EVAL parentheses_expr { $$ = Expr\Eval_[$2]; }
628
- | T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
629
- | T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
630
- | T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
631
- | T_DOUBLE_CAST expr
632
- { $attrs = attributes();
633
- $attrs['kind'] = $this->getFloatCastKind($1);
634
- $$ = new Expr\Cast\Double($2, $attrs); }
635
- | T_STRING_CAST expr { $$ = Expr\Cast\String_ [$2]; }
636
- | T_ARRAY_CAST expr { $$ = Expr\Cast\Array_ [$2]; }
637
- | T_OBJECT_CAST expr { $$ = Expr\Cast\Object_ [$2]; }
638
- | T_BOOL_CAST expr { $$ = Expr\Cast\Bool_ [$2]; }
639
- | T_UNSET_CAST expr { $$ = Expr\Cast\Unset_ [$2]; }
640
- | T_EXIT exit_expr
641
- { $attrs = attributes();
642
- $attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
643
- $$ = new Expr\Exit_($2, $attrs); }
644
- | '@' expr { $$ = Expr\ErrorSuppress[$2]; }
645
- | scalar { $$ = $1; }
646
- | array_expr { $$ = $1; }
647
- | scalar_dereference { $$ = $1; }
648
- | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
649
- | T_PRINT expr { $$ = Expr\Print_[$2]; }
650
- | T_YIELD { $$ = Expr\Yield_[null, null]; }
651
- | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
652
- | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
653
- '{' inner_statement_list '}'
654
- { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $9]]; }
655
- | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
656
- '{' inner_statement_list '}'
657
- { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $10]]; }
658
- ;
659
-
660
- parentheses_expr:
661
- '(' expr ')' { $$ = $2; }
662
- | '(' yield_expr ')' { $$ = $2; }
663
- ;
664
-
665
- yield_expr:
666
- T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
667
- | T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
668
- ;
669
-
670
- array_expr:
671
- T_ARRAY '(' array_pair_list ')'
672
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
673
- $$ = new Expr\Array_($3, $attrs); }
674
- | '[' array_pair_list ']'
675
- { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_SHORT;
676
- $$ = new Expr\Array_($2, $attrs); }
677
- ;
678
-
679
- scalar_dereference:
680
- array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
681
- | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
682
- { $attrs = attributes(); $attrs['kind'] = strKind($1);
683
- $$ = Expr\ArrayDimFetch[new Scalar\String_(Scalar\String_::parse($1), $attrs), $3]; }
684
- | constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
685
- | scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
686
- /* alternative array syntax missing intentionally */
687
- ;
688
-
689
- anonymous_class:
690
- T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
691
- { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $3, 'implements' => $4, 'stmts' => $6]], $2);
692
- $this->checkClass($$[0], -1); }
693
- ;
694
-
695
- new_expr:
696
- T_NEW class_name_reference ctor_arguments { $$ = Expr\New_[$2, $3]; }
697
- | T_NEW anonymous_class
698
- { list($class, $ctorArgs) = $2; $$ = Expr\New_[$class, $ctorArgs]; }
699
- ;
700
-
701
- lexical_vars:
702
- /* empty */ { $$ = array(); }
703
- | T_USE '(' lexical_var_list ')' { $$ = $3; }
704
- ;
705
-
706
- lexical_var_list:
707
- lexical_var { init($1); }
708
- | lexical_var_list ',' lexical_var { push($1, $3); }
709
- ;
710
-
711
- lexical_var:
712
- optional_ref plain_variable { $$ = Expr\ClosureUse[$2, $1]; }
713
- ;
714
-
715
- function_call:
716
- name argument_list { $$ = Expr\FuncCall[$1, $2]; }
717
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex argument_list
718
- { $$ = Expr\StaticCall[$1, $3, $4]; }
719
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '{' expr '}' argument_list
720
- { $$ = Expr\StaticCall[$1, $4, $6]; }
721
- | static_property argument_list
722
- { $$ = $this->fixupPhp5StaticPropCall($1, $2, attributes()); }
723
- | variable_without_objects argument_list
724
- { $$ = Expr\FuncCall[$1, $2]; }
725
- | function_call '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
726
- /* alternative array syntax missing intentionally */
727
- ;
728
-
729
- class_name:
730
- T_STATIC { $$ = Name[$1]; }
731
- | name { $$ = $1; }
732
- ;
733
-
734
- name:
735
- T_STRING { $$ = Name[$1]; }
736
- | T_NAME_QUALIFIED { $$ = Name[$1]; }
737
- | T_NAME_FULLY_QUALIFIED { $$ = Name\FullyQualified[substr($1, 1)]; }
738
- | T_NAME_RELATIVE { $$ = Name\Relative[substr($1, 10)]; }
739
- ;
740
-
741
- class_name_reference:
742
- class_name { $$ = $1; }
743
- | dynamic_class_name_reference { $$ = $1; }
744
- ;
745
-
746
- dynamic_class_name_reference:
747
- object_access_for_dcnr { $$ = $1; }
748
- | base_variable { $$ = $1; }
749
- ;
750
-
751
- class_name_or_var:
752
- class_name { $$ = $1; }
753
- | reference_variable { $$ = $1; }
754
- ;
755
-
756
- object_access_for_dcnr:
757
- base_variable T_OBJECT_OPERATOR object_property
758
- { $$ = Expr\PropertyFetch[$1, $3]; }
759
- | object_access_for_dcnr T_OBJECT_OPERATOR object_property
760
- { $$ = Expr\PropertyFetch[$1, $3]; }
761
- | object_access_for_dcnr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
762
- | object_access_for_dcnr '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
763
- ;
764
-
765
- exit_expr:
766
- /* empty */ { $$ = null; }
767
- | '(' ')' { $$ = null; }
768
- | parentheses_expr { $$ = $1; }
769
- ;
770
-
771
- backticks_expr:
772
- /* empty */ { $$ = array(); }
773
- | T_ENCAPSED_AND_WHITESPACE
774
- { $$ = array(Scalar\EncapsedStringPart[Scalar\String_::parseEscapeSequences($1, '`', false)]); }
775
- | encaps_list { parseEncapsed($1, '`', false); $$ = $1; }
776
- ;
777
-
778
- ctor_arguments:
779
- /* empty */ { $$ = array(); }
780
- | argument_list { $$ = $1; }
781
- ;
782
-
783
- common_scalar:
784
- T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
785
- | T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
786
- | T_CONSTANT_ENCAPSED_STRING
787
- { $attrs = attributes(); $attrs['kind'] = strKind($1);
788
- $$ = new Scalar\String_(Scalar\String_::parse($1, false), $attrs); }
789
- | T_LINE { $$ = Scalar\MagicConst\Line[]; }
790
- | T_FILE { $$ = Scalar\MagicConst\File[]; }
791
- | T_DIR { $$ = Scalar\MagicConst\Dir[]; }
792
- | T_CLASS_C { $$ = Scalar\MagicConst\Class_[]; }
793
- | T_TRAIT_C { $$ = Scalar\MagicConst\Trait_[]; }
794
- | T_METHOD_C { $$ = Scalar\MagicConst\Method[]; }
795
- | T_FUNC_C { $$ = Scalar\MagicConst\Function_[]; }
796
- | T_NS_C { $$ = Scalar\MagicConst\Namespace_[]; }
797
- | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
798
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), false); }
799
- | T_START_HEREDOC T_END_HEREDOC
800
- { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), false); }
801
- ;
802
-
803
- static_scalar:
804
- common_scalar { $$ = $1; }
805
- | class_name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = Expr\ClassConstFetch[$1, $3]; }
806
- | name { $$ = Expr\ConstFetch[$1]; }
807
- | T_ARRAY '(' static_array_pair_list ')' { $$ = Expr\Array_[$3]; }
808
- | '[' static_array_pair_list ']' { $$ = Expr\Array_[$2]; }
809
- | static_operation { $$ = $1; }
810
- ;
811
-
812
- static_operation:
813
- static_scalar T_BOOLEAN_OR static_scalar { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
814
- | static_scalar T_BOOLEAN_AND static_scalar { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
815
- | static_scalar T_LOGICAL_OR static_scalar { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
816
- | static_scalar T_LOGICAL_AND static_scalar { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
817
- | static_scalar T_LOGICAL_XOR static_scalar { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
818
- | static_scalar '|' static_scalar { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
819
- | static_scalar '&' static_scalar { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
820
- | static_scalar '^' static_scalar { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
821
- | static_scalar '.' static_scalar { $$ = Expr\BinaryOp\Concat [$1, $3]; }
822
- | static_scalar '+' static_scalar { $$ = Expr\BinaryOp\Plus [$1, $3]; }
823
- | static_scalar '-' static_scalar { $$ = Expr\BinaryOp\Minus [$1, $3]; }
824
- | static_scalar '*' static_scalar { $$ = Expr\BinaryOp\Mul [$1, $3]; }
825
- | static_scalar '/' static_scalar { $$ = Expr\BinaryOp\Div [$1, $3]; }
826
- | static_scalar '%' static_scalar { $$ = Expr\BinaryOp\Mod [$1, $3]; }
827
- | static_scalar T_SL static_scalar { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
828
- | static_scalar T_SR static_scalar { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
829
- | static_scalar T_POW static_scalar { $$ = Expr\BinaryOp\Pow [$1, $3]; }
830
- | '+' static_scalar %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
831
- | '-' static_scalar %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
832
- | '!' static_scalar { $$ = Expr\BooleanNot[$2]; }
833
- | '~' static_scalar { $$ = Expr\BitwiseNot[$2]; }
834
- | static_scalar T_IS_IDENTICAL static_scalar { $$ = Expr\BinaryOp\Identical [$1, $3]; }
835
- | static_scalar T_IS_NOT_IDENTICAL static_scalar { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
836
- | static_scalar T_IS_EQUAL static_scalar { $$ = Expr\BinaryOp\Equal [$1, $3]; }
837
- | static_scalar T_IS_NOT_EQUAL static_scalar { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
838
- | static_scalar '<' static_scalar { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
839
- | static_scalar T_IS_SMALLER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
840
- | static_scalar '>' static_scalar { $$ = Expr\BinaryOp\Greater [$1, $3]; }
841
- | static_scalar T_IS_GREATER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
842
- | static_scalar '?' static_scalar ':' static_scalar { $$ = Expr\Ternary[$1, $3, $5]; }
843
- | static_scalar '?' ':' static_scalar { $$ = Expr\Ternary[$1, null, $4]; }
844
- | static_scalar '[' static_scalar ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
845
- | '(' static_scalar ')' { $$ = $2; }
846
- ;
847
-
848
- constant:
849
- name { $$ = Expr\ConstFetch[$1]; }
850
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex
851
- { $$ = Expr\ClassConstFetch[$1, $3]; }
852
- ;
853
-
854
- scalar:
855
- common_scalar { $$ = $1; }
856
- | constant { $$ = $1; }
857
- | '"' encaps_list '"'
858
- { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
859
- parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
860
- | T_START_HEREDOC encaps_list T_END_HEREDOC
861
- { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
862
- ;
863
-
864
- static_array_pair_list:
865
- /* empty */ { $$ = array(); }
866
- | non_empty_static_array_pair_list optional_comma { $$ = $1; }
867
- ;
868
-
869
- optional_comma:
870
- /* empty */
871
- | ','
872
- ;
873
-
874
- non_empty_static_array_pair_list:
875
- non_empty_static_array_pair_list ',' static_array_pair { push($1, $3); }
876
- | static_array_pair { init($1); }
877
- ;
878
-
879
- static_array_pair:
880
- static_scalar T_DOUBLE_ARROW static_scalar { $$ = Expr\ArrayItem[$3, $1, false]; }
881
- | static_scalar { $$ = Expr\ArrayItem[$1, null, false]; }
882
- ;
883
-
884
- variable:
885
- object_access { $$ = $1; }
886
- | base_variable { $$ = $1; }
887
- | function_call { $$ = $1; }
888
- | new_expr_array_deref { $$ = $1; }
889
- ;
890
-
891
- new_expr_array_deref:
892
- '(' new_expr ')' '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$2, $5]; }
893
- | new_expr_array_deref '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
894
- /* alternative array syntax missing intentionally */
895
- ;
896
-
897
- object_access:
898
- variable_or_new_expr T_OBJECT_OPERATOR object_property
899
- { $$ = Expr\PropertyFetch[$1, $3]; }
900
- | variable_or_new_expr T_OBJECT_OPERATOR object_property argument_list
901
- { $$ = Expr\MethodCall[$1, $3, $4]; }
902
- | object_access argument_list { $$ = Expr\FuncCall[$1, $2]; }
903
- | object_access '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
904
- | object_access '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
905
- ;
906
-
907
- variable_or_new_expr:
908
- variable { $$ = $1; }
909
- | '(' new_expr ')' { $$ = $2; }
910
- ;
911
-
912
- variable_without_objects:
913
- reference_variable { $$ = $1; }
914
- | '$' variable_without_objects { $$ = Expr\Variable[$2]; }
915
- ;
916
-
917
- base_variable:
918
- variable_without_objects { $$ = $1; }
919
- | static_property { $$ = $1; }
920
- ;
921
-
922
- static_property:
923
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' reference_variable
924
- { $$ = Expr\StaticPropertyFetch[$1, $4]; }
925
- | static_property_with_arrays { $$ = $1; }
926
- ;
927
-
928
- static_property_simple_name:
929
- T_VARIABLE
930
- { $var = parseVar($1); $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
931
- ;
932
-
933
- static_property_with_arrays:
934
- class_name_or_var T_PAAMAYIM_NEKUDOTAYIM static_property_simple_name
935
- { $$ = Expr\StaticPropertyFetch[$1, $3]; }
936
- | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' '{' expr '}'
937
- { $$ = Expr\StaticPropertyFetch[$1, $5]; }
938
- | static_property_with_arrays '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
939
- | static_property_with_arrays '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
940
- ;
941
-
942
- reference_variable:
943
- reference_variable '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
944
- | reference_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
945
- | plain_variable { $$ = $1; }
946
- | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
947
- ;
948
-
949
- dim_offset:
950
- /* empty */ { $$ = null; }
951
- | expr { $$ = $1; }
952
- ;
953
-
954
- object_property:
955
- identifier { $$ = $1; }
956
- | '{' expr '}' { $$ = $2; }
957
- | variable_without_objects { $$ = $1; }
958
- | error { $$ = Expr\Error[]; $this->errorState = 2; }
959
- ;
960
-
961
- list_expr:
962
- T_LIST '(' list_expr_elements ')' { $$ = Expr\List_[$3]; }
963
- ;
964
-
965
- list_expr_elements:
966
- list_expr_elements ',' list_expr_element { push($1, $3); }
967
- | list_expr_element { init($1); }
968
- ;
969
-
970
- list_expr_element:
971
- variable { $$ = Expr\ArrayItem[$1, null, false]; }
972
- | list_expr { $$ = Expr\ArrayItem[$1, null, false]; }
973
- | /* empty */ { $$ = null; }
974
- ;
975
-
976
- array_pair_list:
977
- /* empty */ { $$ = array(); }
978
- | non_empty_array_pair_list optional_comma { $$ = $1; }
979
- ;
980
-
981
- non_empty_array_pair_list:
982
- non_empty_array_pair_list ',' array_pair { push($1, $3); }
983
- | array_pair { init($1); }
984
- ;
985
-
986
- array_pair:
987
- expr T_DOUBLE_ARROW expr { $$ = Expr\ArrayItem[$3, $1, false]; }
988
- | expr { $$ = Expr\ArrayItem[$1, null, false]; }
989
- | expr T_DOUBLE_ARROW '&' variable { $$ = Expr\ArrayItem[$4, $1, true]; }
990
- | '&' variable { $$ = Expr\ArrayItem[$2, null, true]; }
991
- | T_ELLIPSIS expr { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
992
- ;
993
-
994
- encaps_list:
995
- encaps_list encaps_var { push($1, $2); }
996
- | encaps_list encaps_string_part { push($1, $2); }
997
- | encaps_var { init($1); }
998
- | encaps_string_part encaps_var { init($1, $2); }
999
- ;
1000
-
1001
- encaps_string_part:
1002
- T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
1003
- ;
1004
-
1005
- encaps_str_varname:
1006
- T_STRING_VARNAME { $$ = Expr\Variable[$1]; }
1007
- ;
1008
-
1009
- encaps_var:
1010
- plain_variable { $$ = $1; }
1011
- | plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
1012
- | plain_variable T_OBJECT_OPERATOR identifier { $$ = Expr\PropertyFetch[$1, $3]; }
1013
- | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
1014
- | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
1015
- | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
1016
- { $$ = Expr\ArrayDimFetch[$2, $4]; }
1017
- | T_CURLY_OPEN variable '}' { $$ = $2; }
1018
- ;
1019
-
1020
- encaps_var_offset:
1021
- T_STRING { $$ = Scalar\String_[$1]; }
1022
- | T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
1023
- | plain_variable { $$ = $1; }
1024
- ;
1025
-
1026
- %%