@appthreat/atom-parsetools 1.0.3 → 1.0.5

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 (838) hide show
  1. package/package.json +3 -3
  2. package/plugins/autoload.php +1 -1
  3. package/plugins/bin/bundler +1 -1
  4. package/plugins/bin/ruby_ast_gen +1 -1
  5. package/plugins/composer/autoload_classmap.php +22 -8
  6. package/plugins/composer/autoload_real.php +4 -4
  7. package/plugins/composer/autoload_static.php +26 -12
  8. package/plugins/composer/installed.json +12 -10
  9. package/plugins/composer/installed.php +9 -9
  10. package/plugins/nikic/php-parser/README.md +20 -12
  11. package/plugins/nikic/php-parser/bin/php-parse +11 -10
  12. package/plugins/nikic/php-parser/composer.json +6 -4
  13. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +19 -17
  14. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +35 -30
  15. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +11 -4
  16. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +8 -7
  17. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +26 -27
  18. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +7 -7
  19. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +7 -7
  20. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +11 -10
  21. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +16 -15
  22. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
  23. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +38 -35
  24. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +82 -20
  25. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +6 -5
  26. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +25 -28
  27. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +16 -11
  28. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
  29. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +2 -3
  30. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +46 -70
  31. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +23 -20
  32. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +1 -2
  33. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +37 -67
  34. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
  35. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +15 -10
  36. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +26 -33
  37. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +6 -9
  38. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +2 -3
  39. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +2 -3
  40. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +11 -7
  41. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +36 -22
  42. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +20 -13
  43. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  44. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +70 -74
  45. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +15 -10
  46. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +72 -97
  47. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
  48. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +11 -18
  49. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +10 -15
  50. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +12 -11
  51. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +24 -26
  52. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +6 -10
  53. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +22 -29
  54. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
  55. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +3 -3
  56. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +10 -15
  57. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +6 -5
  58. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +10 -5
  59. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +69 -513
  60. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
  61. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +24 -25
  62. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +13 -15
  63. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +9 -10
  65. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +5 -7
  66. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  67. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +1 -2
  68. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +9 -10
  69. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  70. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +10 -11
  71. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +4 -34
  72. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
  73. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +33 -28
  74. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +9 -10
  75. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +2 -3
  76. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +2 -3
  77. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +2 -3
  78. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +2 -3
  79. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +2 -3
  80. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +2 -3
  81. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +2 -3
  82. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +2 -3
  83. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +2 -3
  84. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +2 -3
  85. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +2 -3
  86. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +2 -3
  87. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +2 -3
  88. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +7 -8
  89. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +9 -10
  90. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +4 -5
  91. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +4 -5
  92. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +4 -5
  93. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +4 -5
  94. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +4 -5
  95. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +4 -5
  96. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +4 -5
  97. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +4 -5
  98. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +4 -5
  99. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +4 -5
  100. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +4 -5
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +4 -5
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +4 -5
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +4 -5
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +4 -5
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +4 -5
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +4 -5
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +4 -5
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +4 -5
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +4 -5
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +4 -5
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +4 -5
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +4 -5
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +4 -5
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +4 -5
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +4 -5
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +4 -5
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +8 -11
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +7 -8
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +7 -8
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +3 -7
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +2 -3
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +2 -3
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +5 -6
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +2 -3
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +2 -3
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +2 -3
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +2 -3
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +5 -6
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +10 -10
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +7 -8
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +33 -26
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +4 -27
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +7 -8
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +7 -8
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +5 -6
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +7 -8
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +7 -8
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +10 -11
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +10 -11
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +13 -14
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +7 -8
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +12 -8
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +8 -7
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +12 -12
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +10 -11
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +12 -12
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +7 -8
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +7 -8
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +6 -7
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +7 -8
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +7 -8
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +12 -13
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +12 -13
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +6 -7
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +7 -8
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +7 -8
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +6 -7
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +7 -8
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +10 -11
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +1 -2
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +5 -8
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +24 -14
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +6 -9
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +8 -10
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +8 -9
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +8 -9
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +78 -54
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +11 -10
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +83 -24
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +4 -70
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +4 -24
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +5 -22
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +4 -73
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +4 -5
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +4 -5
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +4 -5
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +4 -5
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +4 -5
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +4 -5
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +4 -5
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +4 -5
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +4 -5
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +30 -26
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +1 -2
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +8 -9
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +10 -11
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +11 -12
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +24 -32
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +17 -17
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +47 -54
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +46 -89
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +17 -10
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +8 -9
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +5 -26
  209. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +12 -12
  210. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +9 -10
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +7 -8
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +9 -10
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +7 -8
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +11 -12
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +17 -13
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +7 -8
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +7 -8
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +19 -15
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +20 -17
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +28 -24
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +7 -8
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +7 -8
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +16 -14
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +7 -8
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +18 -15
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +7 -8
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +13 -10
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +7 -8
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +11 -12
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +4 -5
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +68 -38
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +5 -26
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +8 -9
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +4 -30
  235. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +8 -8
  236. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +9 -10
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +8 -9
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +12 -13
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +9 -10
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +3 -4
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +10 -8
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +11 -12
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +7 -8
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +5 -44
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +9 -10
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +1 -2
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +7 -8
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +2 -3
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +2 -2
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +28 -29
  253. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +23 -20
  254. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +177 -84
  255. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +28 -19
  256. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +156 -160
  257. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +4 -7
  258. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +1 -2
  259. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  260. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +6 -7
  261. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +6 -7
  262. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +37 -28
  263. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +29 -8
  264. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +23 -13
  265. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +59 -7
  266. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +1 -2
  267. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2034 -2141
  268. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2814 -0
  269. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +9 -3
  270. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +503 -269
  271. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +15 -49
  272. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +171 -0
  273. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +428 -339
  274. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  275. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +563 -445
  276. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  277. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +68 -0
  278. package/plugins/rubyastgen/Gemfile +3 -2
  279. package/plugins/rubyastgen/Gemfile.lock +10 -5
  280. package/plugins/rubyastgen/bundle/bundler/setup.rb +4 -2
  281. package/plugins/rubyastgen/bundle/ruby/3.4.0/bin/bundle +29 -0
  282. package/plugins/rubyastgen/bundle/ruby/3.4.0/bin/bundler +29 -0
  283. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/Gemfile +2 -1
  284. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/README.md +7 -4
  285. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/bin/console +11 -0
  286. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/exe/ruby_ast_gen +60 -0
  287. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen/node_handling.rb +49 -31
  288. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen/version.rb +1 -1
  289. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/lib/ruby_ast_gen.rb +24 -10
  290. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/ruby_ast_gen.gemspec +4 -4
  291. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-8738b155eb4f/spec/ruby_ast_gen_spec.rb +299 -0
  292. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/update_version.rb +6 -5
  293. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/gem.build_complete +0 -0
  294. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/gem_make.out +44 -0
  295. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/mkmf.log +74 -0
  296. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.4.0/prism/prism.so +0 -0
  297. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/gem_make.out +6 -6
  298. package/plugins/rubyastgen/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/racc/cparse.so +0 -0
  299. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/CHANGELOG.md +5239 -0
  300. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/LICENSE.md +22 -0
  301. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/README.md +58 -0
  302. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/bundler.gemspec +46 -0
  303. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/exe/bundle +29 -0
  304. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/exe/bundler +4 -0
  305. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/.document +1 -0
  306. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/build_metadata.rb +45 -0
  307. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/capistrano.rb +22 -0
  308. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/checksum.rb +264 -0
  309. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ci_detector.rb +75 -0
  310. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/add.rb +49 -0
  311. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/binstubs.rb +57 -0
  312. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/cache.rb +43 -0
  313. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/check.rb +40 -0
  314. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/clean.rb +25 -0
  315. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/common.rb +138 -0
  316. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/config.rb +204 -0
  317. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/console.rb +42 -0
  318. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/doctor.rb +161 -0
  319. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/exec.rb +89 -0
  320. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/fund.rb +36 -0
  321. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/gem.rb +467 -0
  322. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/info.rb +83 -0
  323. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/init.rb +51 -0
  324. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/inject.rb +60 -0
  325. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/install.rb +199 -0
  326. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/issue.rb +41 -0
  327. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/list.rb +66 -0
  328. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/lock.rb +94 -0
  329. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/open.rb +29 -0
  330. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/outdated.rb +297 -0
  331. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/platform.rb +48 -0
  332. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/plugin.rb +35 -0
  333. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/pristine.rb +60 -0
  334. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/remove.rb +17 -0
  335. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/show.rb +75 -0
  336. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/update.rb +123 -0
  337. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli/viz.rb +31 -0
  338. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/cli.rb +799 -0
  339. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/cache.rb +96 -0
  340. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/cache_file.rb +148 -0
  341. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/parser.rb +84 -0
  342. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client/updater.rb +105 -0
  343. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/compact_index_client.rb +97 -0
  344. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/constants.rb +14 -0
  345. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/current_ruby.rb +82 -0
  346. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/definition.rb +1170 -0
  347. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/dependency.rb +151 -0
  348. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/deployment.rb +69 -0
  349. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/deprecate.rb +44 -0
  350. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/digest.rb +71 -0
  351. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/dsl.rb +638 -0
  352. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/endpoint_specification.rb +174 -0
  353. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/env.rb +148 -0
  354. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/environment_preserver.rb +68 -0
  355. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/errors.rb +281 -0
  356. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/feature_flag.rb +50 -0
  357. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/base.rb +52 -0
  358. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/compact_index.rb +120 -0
  359. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/dependency.rb +78 -0
  360. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/downloader.rb +91 -0
  361. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  362. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher/index.rb +25 -0
  363. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/fetcher.rb +331 -0
  364. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/force_platform.rb +16 -0
  365. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/friendly_errors.rb +126 -0
  366. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_helper.rb +237 -0
  367. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_helpers.rb +144 -0
  368. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_tasks.rb +7 -0
  369. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/gem_version_promoter.rb +147 -0
  370. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/graph.rb +152 -0
  371. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/index.rb +205 -0
  372. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/injector.rb +285 -0
  373. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/inline.rb +98 -0
  374. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/gem_installer.rb +85 -0
  375. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/parallel_installer.rb +203 -0
  376. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer/standalone.rb +113 -0
  377. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/installer.rb +243 -0
  378. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lazy_specification.rb +234 -0
  379. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lockfile_generator.rb +104 -0
  380. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/lockfile_parser.rb +300 -0
  381. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/.document +1 -0
  382. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-add.1 +76 -0
  383. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-add.1.ronn +87 -0
  384. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-binstubs.1 +33 -0
  385. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-binstubs.1.ronn +44 -0
  386. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-cache.1 +68 -0
  387. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-cache.1.ronn +108 -0
  388. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-check.1 +24 -0
  389. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-check.1.ronn +31 -0
  390. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-clean.1 +17 -0
  391. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-clean.1.ronn +18 -0
  392. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-config.1 +317 -0
  393. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-config.1.ronn +408 -0
  394. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-console.1 +33 -0
  395. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-console.1.ronn +39 -0
  396. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-doctor.1 +30 -0
  397. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  398. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-env.1 +9 -0
  399. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-env.1.ronn +10 -0
  400. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-exec.1 +107 -0
  401. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-exec.1.ronn +154 -0
  402. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-fund.1 +22 -0
  403. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-fund.1.ronn +25 -0
  404. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-gem.1 +87 -0
  405. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-gem.1.ronn +149 -0
  406. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-help.1 +9 -0
  407. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-help.1.ronn +12 -0
  408. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-info.1 +17 -0
  409. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-info.1.ronn +21 -0
  410. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-init.1 +20 -0
  411. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-init.1.ronn +32 -0
  412. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-inject.1 +31 -0
  413. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-inject.1.ronn +32 -0
  414. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-install.1 +218 -0
  415. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-install.1.ronn +387 -0
  416. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-issue.1 +45 -0
  417. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-issue.1.ronn +37 -0
  418. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-licenses.1 +9 -0
  419. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  420. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-list.1 +35 -0
  421. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-list.1.ronn +36 -0
  422. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-lock.1 +75 -0
  423. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-lock.1.ronn +115 -0
  424. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-open.1 +32 -0
  425. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-open.1.ronn +28 -0
  426. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-outdated.1 +103 -0
  427. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-outdated.1.ronn +110 -0
  428. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-platform.1 +49 -0
  429. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-platform.1.ronn +49 -0
  430. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-plugin.1 +58 -0
  431. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-plugin.1.ronn +63 -0
  432. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-pristine.1 +23 -0
  433. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  434. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-remove.1 +21 -0
  435. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-remove.1.ronn +23 -0
  436. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-show.1 +19 -0
  437. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-show.1.ronn +25 -0
  438. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-update.1 +281 -0
  439. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-update.1.ronn +359 -0
  440. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-version.1 +22 -0
  441. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-version.1.ronn +24 -0
  442. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-viz.1 +30 -0
  443. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle-viz.1.ronn +36 -0
  444. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle.1 +102 -0
  445. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/bundle.1.ronn +116 -0
  446. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/gemfile.5 +472 -0
  447. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/gemfile.5.ronn +558 -0
  448. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/man/index.txt +33 -0
  449. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_metadata.rb +30 -0
  450. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_platform.rb +23 -0
  451. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/match_remote_metadata.rb +29 -0
  452. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/materialization.rb +59 -0
  453. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/mirror.rb +221 -0
  454. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/api/source.rb +322 -0
  455. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/api.rb +81 -0
  456. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/dsl.rb +53 -0
  457. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/events.rb +85 -0
  458. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/index.rb +197 -0
  459. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/git.rb +34 -0
  460. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/path.rb +26 -0
  461. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer/rubygems.rb +19 -0
  462. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/installer.rb +132 -0
  463. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin/source_list.rb +31 -0
  464. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/plugin.rb +378 -0
  465. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/process_lock.rb +20 -0
  466. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/remote_specification.rb +126 -0
  467. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/base.rb +118 -0
  468. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/candidate.rb +85 -0
  469. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/incompatibility.rb +15 -0
  470. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/package.rb +94 -0
  471. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/root.rb +25 -0
  472. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/spec_group.rb +74 -0
  473. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver/strategy.rb +40 -0
  474. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/resolver.rb +522 -0
  475. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/retry.rb +66 -0
  476. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ruby_dsl.rb +62 -0
  477. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ruby_version.rb +137 -0
  478. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_ext.rb +485 -0
  479. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_gem_installer.rb +172 -0
  480. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/rubygems_integration.rb +455 -0
  481. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/runtime.rb +320 -0
  482. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/safe_marshal.rb +31 -0
  483. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/self_manager.rb +206 -0
  484. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/settings/validator.rb +102 -0
  485. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/settings.rb +599 -0
  486. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/setup.rb +39 -0
  487. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/shared_helpers.rb +398 -0
  488. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/similarity_detector.rb +63 -0
  489. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/gemspec.rb +15 -0
  490. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/git/git_proxy.rb +472 -0
  491. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/git.rb +452 -0
  492. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/metadata.rb +63 -0
  493. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/path/installer.rb +53 -0
  494. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/path.rb +250 -0
  495. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems/remote.rb +76 -0
  496. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems.rb +522 -0
  497. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source/rubygems_aggregate.rb +68 -0
  498. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source.rb +118 -0
  499. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source_list.rb +273 -0
  500. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/source_map.rb +71 -0
  501. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/spec_set.rb +367 -0
  502. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/stub_specification.rb +146 -0
  503. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/.document +1 -0
  504. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable +27 -0
  505. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable.bundler +109 -0
  506. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Executable.standalone +14 -0
  507. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/Gemfile +5 -0
  508. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  509. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +132 -0
  510. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  511. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Gemfile.tt +24 -0
  512. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
  513. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/README.md.tt +49 -0
  514. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/Rakefile.tt +67 -0
  515. package/plugins/rubyastgen/bundle/ruby/3.4.0/{bundler/gems/ruby_ast_gen-2a9186207494/bin/console → gems/bundler-2.6.7/lib/bundler/templates/newgem/bin/console.tt} +1 -1
  516. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1/bin/setup → bundler-2.6.7/lib/bundler/templates/newgem/bin/setup.tt} +0 -0
  517. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  518. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  519. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  520. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  521. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  522. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  523. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  524. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  525. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  526. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/gitignore.tt +23 -0
  527. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  528. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
  529. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
  530. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/newgem.gemspec.tt +52 -0
  531. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/rspec.tt +3 -0
  532. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/rubocop.yml.tt +8 -0
  533. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  534. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +11 -0
  535. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
  536. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  537. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  538. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +13 -0
  539. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  540. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  541. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/rg_proxy.rb +19 -0
  542. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/shell.rb +187 -0
  543. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui/silent.rb +96 -0
  544. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/ui.rb +9 -0
  545. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/uri_credentials_filter.rb +43 -0
  546. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/uri_normalizer.rb +23 -0
  547. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/.document +1 -0
  548. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/.document +1 -0
  549. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  550. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +224 -0
  551. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  552. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  553. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +186 -0
  554. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/fileutils/.document +1 -0
  555. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/fileutils/lib/fileutils.rb +2696 -0
  556. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/.document +1 -0
  557. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  558. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  559. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  560. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  561. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1111 -0
  562. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/.document +1 -0
  563. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  564. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  565. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +169 -0
  566. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  567. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  568. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  569. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  570. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  571. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  572. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
  573. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  574. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  575. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  576. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  577. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +423 -0
  578. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +236 -0
  579. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  580. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  581. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/.document +1 -0
  582. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/COPYING +56 -0
  583. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  584. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/.document +1 -0
  585. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/LICENSE.md +20 -0
  586. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  587. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  588. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  589. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  590. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +371 -0
  591. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  592. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  593. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  594. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  595. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  596. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  597. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/group.rb +292 -0
  598. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  599. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  600. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  601. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  602. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  603. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +86 -0
  604. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  605. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  606. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser/options.rb +294 -0
  607. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  608. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  609. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  610. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +388 -0
  611. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
  612. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  613. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
  614. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +118 -0
  615. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  616. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  617. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  618. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  619. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  620. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/thor/lib/thor.rb +674 -0
  621. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/.document +1 -0
  622. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  623. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  624. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/.document +1 -0
  625. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/COPYING +56 -0
  626. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/common.rb +880 -0
  627. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  628. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  629. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/generic.rb +1579 -0
  630. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/http.rb +125 -0
  631. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  632. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  633. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  634. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  635. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  636. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  637. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  638. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  639. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  640. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  641. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_fileutils.rb +4 -0
  642. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_net_http.rb +23 -0
  643. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_persistent.rb +11 -0
  644. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_pub_grub.rb +4 -0
  645. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_securerandom.rb +12 -0
  646. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_thor.rb +8 -0
  647. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_timeout.rb +12 -0
  648. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_tsort.rb +4 -0
  649. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vendored_uri.rb +21 -0
  650. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/version.rb +13 -0
  651. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/vlad.rb +17 -0
  652. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/worker.rb +117 -0
  653. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler/yaml_serializer.rb +98 -0
  654. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/bundler-2.6.7/lib/bundler.rb +701 -0
  655. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/ostruct-0.6.3/COPYING +56 -0
  656. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/ostruct-0.6.3/bin/setup +8 -0
  657. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/lib/ostruct.rb +5 -2
  658. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/ostruct.gemspec +2 -0
  659. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/BSDmakefile +58 -0
  660. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CHANGELOG.md +684 -0
  661. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CODE_OF_CONDUCT.md +76 -0
  662. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/CONTRIBUTING.md +58 -0
  663. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/LICENSE.md +7 -0
  664. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/Makefile +108 -0
  665. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/README.md +141 -0
  666. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/config.yml +4486 -0
  667. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/build_system.md +119 -0
  668. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/configuration.md +68 -0
  669. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/cruby_compilation.md +27 -0
  670. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/design.md +53 -0
  671. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/encoding.md +121 -0
  672. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/fuzzing.md +88 -0
  673. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/heredocs.md +36 -0
  674. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/javascript.md +118 -0
  675. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/local_variable_depth.md +229 -0
  676. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/mapping.md +117 -0
  677. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/parser_translation.md +39 -0
  678. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/parsing_rules.md +22 -0
  679. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/releasing.md +96 -0
  680. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/relocation.md +34 -0
  681. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ripper_translation.md +72 -0
  682. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ruby_api.md +44 -0
  683. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/ruby_parser_translation.md +19 -0
  684. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/serialization.md +233 -0
  685. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/docs/testing.md +55 -0
  686. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/Makefile +273 -0
  687. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/api_node.c +6939 -0
  688. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/api_pack.c +276 -0
  689. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extconf.rb +127 -0
  690. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extension.c +1406 -0
  691. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/ext/prism/extension.h +19 -0
  692. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/ast.h +7964 -0
  693. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/defines.h +260 -0
  694. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/diagnostic.h +451 -0
  695. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/encoding.h +283 -0
  696. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/node.h +129 -0
  697. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/options.h +442 -0
  698. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/pack.h +163 -0
  699. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/parser.h +933 -0
  700. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/prettyprint.h +34 -0
  701. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/regexp.h +43 -0
  702. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/static_literals.h +121 -0
  703. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_buffer.h +228 -0
  704. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_char.h +204 -0
  705. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_constant_pool.h +218 -0
  706. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_integer.h +126 -0
  707. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_list.h +97 -0
  708. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_memchr.h +29 -0
  709. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_newline_list.h +113 -0
  710. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_string.h +190 -0
  711. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_strncasecmp.h +32 -0
  712. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/util/pm_strpbrk.h +46 -0
  713. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism/version.h +29 -0
  714. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/include/prism.h +383 -0
  715. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/compiler.rb +496 -0
  716. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/desugar_compiler.rb +391 -0
  717. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dispatcher.rb +2194 -0
  718. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dot_visitor.rb +4758 -0
  719. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/dsl.rb +1000 -0
  720. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/ffi.rb +560 -0
  721. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/inspect_visitor.rb +2389 -0
  722. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/lex_compat.rb +927 -0
  723. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/mutation_compiler.rb +769 -0
  724. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/node.rb +18645 -0
  725. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/node_ext.rb +508 -0
  726. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/pack.rb +228 -0
  727. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/comments.rb +187 -0
  728. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/errors.rb +65 -0
  729. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result/newlines.rb +154 -0
  730. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/parse_result.rb +910 -0
  731. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/pattern.rb +268 -0
  732. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/append_as_bytes.rb +15 -0
  733. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/byteindex.rb +13 -0
  734. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/polyfill/unpack1.rb +14 -0
  735. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/prism.so +0 -0
  736. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/reflection.rb +413 -0
  737. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/relocation.rb +504 -0
  738. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/serialize.rb +2392 -0
  739. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/string_query.rb +30 -0
  740. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/builder.rb +61 -0
  741. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/compiler.rb +2212 -0
  742. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser/lexer.rb +812 -0
  743. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser.rb +355 -0
  744. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser33.rb +12 -0
  745. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser34.rb +12 -0
  746. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/parser35.rb +12 -0
  747. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper/sexp.rb +125 -0
  748. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper/shim.rb +5 -0
  749. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ripper.rb +3458 -0
  750. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation/ruby_parser.rb +1646 -0
  751. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/translation.rb +14 -0
  752. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism/visitor.rb +508 -0
  753. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/lib/prism.rb +89 -0
  754. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/prism.gemspec +170 -0
  755. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/compiler.rbi +12 -0
  756. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/dsl.rbi +524 -0
  757. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/inspect_visitor.rbi +12 -0
  758. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/node.rbi +8722 -0
  759. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/node_ext.rbi +107 -0
  760. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/parse_result.rbi +404 -0
  761. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/reflection.rbi +58 -0
  762. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/string_query.rbi +12 -0
  763. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser.rbi +11 -0
  764. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser33.rbi +6 -0
  765. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser34.rbi +6 -0
  766. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/parser35.rbi +6 -0
  767. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/translation/ripper.rbi +15 -0
  768. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism/visitor.rbi +473 -0
  769. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/rbi/prism.rbi +66 -0
  770. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/compiler.rbs +9 -0
  771. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dispatcher.rbs +16 -0
  772. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dot_visitor.rbs +6 -0
  773. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/dsl.rbs +351 -0
  774. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/inspect_visitor.rbs +22 -0
  775. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/lex_compat.rbs +10 -0
  776. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/mutation_compiler.rbs +159 -0
  777. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/node.rbs +3614 -0
  778. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/node_ext.rbs +82 -0
  779. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/pack.rbs +43 -0
  780. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/parse_result.rbs +192 -0
  781. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/pattern.rbs +13 -0
  782. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/reflection.rbs +50 -0
  783. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/relocation.rbs +185 -0
  784. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/serialize.rbs +8 -0
  785. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/string_query.rbs +11 -0
  786. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism/visitor.rbs +169 -0
  787. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/sig/prism.rbs +254 -0
  788. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/diagnostic.c +842 -0
  789. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/encoding.c +5235 -0
  790. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/node.c +8674 -0
  791. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/options.c +328 -0
  792. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/pack.c +509 -0
  793. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/prettyprint.c +8939 -0
  794. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/prism.c +23184 -0
  795. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/regexp.c +790 -0
  796. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/serialize.c +2266 -0
  797. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/static_literals.c +617 -0
  798. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/token_type.c +701 -0
  799. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_buffer.c +357 -0
  800. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_char.c +318 -0
  801. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_constant_pool.c +342 -0
  802. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_integer.c +670 -0
  803. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_list.c +49 -0
  804. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_memchr.c +35 -0
  805. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_newline_list.c +125 -0
  806. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_string.c +383 -0
  807. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_strncasecmp.c +36 -0
  808. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/prism-1.4.0/src/util/pm_strpbrk.c +206 -0
  809. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +3 -3
  810. package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  811. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/ast-2.4.3.gemspec +1 -1
  812. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/bundler-2.6.7.gemspec +25 -0
  813. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/{ostruct-0.6.1.gemspec → ostruct-0.6.3.gemspec} +5 -4
  814. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/parser-3.3.8.0.gemspec +1 -1
  815. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/prism-1.4.0.gemspec +24 -0
  816. package/plugins/rubyastgen/bundle/ruby/3.4.0/specifications/racc-1.8.1.gemspec +1 -1
  817. package/rbastgen.js +1 -1
  818. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +0 -47
  819. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +0 -76
  820. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +0 -23
  821. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +0 -105
  822. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +0 -30
  823. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +0 -55
  824. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php5.php +0 -2682
  825. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +0 -148
  826. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-2a9186207494/exe/ruby_ast_gen +0 -59
  827. package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/ruby_ast_gen-2a9186207494/spec/ruby_ast_gen_spec.rb +0 -175
  828. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/.rspec +0 -0
  829. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/LICENSE.txt +0 -0
  830. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/Rakefile +0 -0
  831. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/bin/setup +0 -0
  832. /package/plugins/rubyastgen/bundle/ruby/3.4.0/bundler/gems/{ruby_ast_gen-2a9186207494 → ruby_ast_gen-8738b155eb4f}/spec/spec_helper.rb +0 -0
  833. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → bundler-2.6.7/lib/bundler/vendor/fileutils}/COPYING +0 -0
  834. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/BSDL +0 -0
  835. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/Gemfile +0 -0
  836. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/README.md +0 -0
  837. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/Rakefile +0 -0
  838. /package/plugins/rubyastgen/bundle/ruby/3.4.0/gems/{ostruct-0.6.1 → ostruct-0.6.3}/bin/console +0 -0
@@ -6,16 +6,24 @@ namespace PhpParser;
6
6
  * This parser is based on a skeleton written by Moriyoshi Koizumi, which in
7
7
  * turn is based on work by Masato Bito.
8
8
  */
9
+
10
+ use PhpParser\Node\Arg;
9
11
  use PhpParser\Node\Expr;
12
+ use PhpParser\Node\Expr\Array_;
10
13
  use PhpParser\Node\Expr\Cast\Double;
14
+ use PhpParser\Node\Identifier;
15
+ use PhpParser\Node\InterpolatedStringPart;
11
16
  use PhpParser\Node\Name;
12
17
  use PhpParser\Node\Param;
13
- use PhpParser\Node\Scalar\Encapsed;
14
- use PhpParser\Node\Scalar\LNumber;
18
+ use PhpParser\Node\PropertyHook;
19
+ use PhpParser\Node\Scalar\InterpolatedString;
20
+ use PhpParser\Node\Scalar\Int_;
15
21
  use PhpParser\Node\Scalar\String_;
22
+ use PhpParser\Node\Stmt;
16
23
  use PhpParser\Node\Stmt\Class_;
17
24
  use PhpParser\Node\Stmt\ClassConst;
18
25
  use PhpParser\Node\Stmt\ClassMethod;
26
+ use PhpParser\Node\Stmt\Const_;
19
27
  use PhpParser\Node\Stmt\Else_;
20
28
  use PhpParser\Node\Stmt\ElseIf_;
21
29
  use PhpParser\Node\Stmt\Enum_;
@@ -24,122 +32,138 @@ use PhpParser\Node\Stmt\Namespace_;
24
32
  use PhpParser\Node\Stmt\Nop;
25
33
  use PhpParser\Node\Stmt\Property;
26
34
  use PhpParser\Node\Stmt\TryCatch;
27
- use PhpParser\Node\Stmt\UseUse;
35
+ use PhpParser\Node\UseItem;
28
36
  use PhpParser\Node\VarLikeIdentifier;
37
+ use PhpParser\NodeVisitor\CommentAnnotatingVisitor;
38
+
39
+ abstract class ParserAbstract implements Parser {
40
+ private const SYMBOL_NONE = -1;
29
41
 
30
- abstract class ParserAbstract implements Parser
31
- {
32
- const SYMBOL_NONE = -1;
42
+ /** @var Lexer Lexer that is used when parsing */
43
+ protected Lexer $lexer;
44
+ /** @var PhpVersion PHP version to target on a best-effort basis */
45
+ protected PhpVersion $phpVersion;
33
46
 
34
47
  /*
35
48
  * The following members will be filled with generated parsing data:
36
49
  */
37
50
 
38
51
  /** @var int Size of $tokenToSymbol map */
39
- protected $tokenToSymbolMapSize;
52
+ protected int $tokenToSymbolMapSize;
40
53
  /** @var int Size of $action table */
41
- protected $actionTableSize;
54
+ protected int $actionTableSize;
42
55
  /** @var int Size of $goto table */
43
- protected $gotoTableSize;
56
+ protected int $gotoTableSize;
44
57
 
45
58
  /** @var int Symbol number signifying an invalid token */
46
- protected $invalidSymbol;
59
+ protected int $invalidSymbol;
47
60
  /** @var int Symbol number of error recovery token */
48
- protected $errorSymbol;
61
+ protected int $errorSymbol;
49
62
  /** @var int Action number signifying default action */
50
- protected $defaultAction;
63
+ protected int $defaultAction;
51
64
  /** @var int Rule number signifying that an unexpected token was encountered */
52
- protected $unexpectedTokenRule;
65
+ protected int $unexpectedTokenRule;
53
66
 
54
- protected $YY2TBLSTATE;
67
+ protected int $YY2TBLSTATE;
55
68
  /** @var int Number of non-leaf states */
56
- protected $numNonLeafStates;
57
-
58
- /** @var int[] Map of lexer tokens to internal symbols */
59
- protected $tokenToSymbol;
69
+ protected int $numNonLeafStates;
70
+
71
+ /** @var int[] Map of PHP token IDs to internal symbols */
72
+ protected array $phpTokenToSymbol;
73
+ /** @var array<int, bool> Map of PHP token IDs to drop */
74
+ protected array $dropTokens;
75
+ /** @var int[] Map of external symbols (static::T_*) to internal symbols */
76
+ protected array $tokenToSymbol;
60
77
  /** @var string[] Map of symbols to their names */
61
- protected $symbolToName;
62
- /** @var array Names of the production rules (only necessary for debugging) */
63
- protected $productions;
78
+ protected array $symbolToName;
79
+ /** @var array<int, string> Names of the production rules (only necessary for debugging) */
80
+ protected array $productions;
64
81
 
65
82
  /** @var int[] Map of states to a displacement into the $action table. The corresponding action for this
66
83
  * state/symbol pair is $action[$actionBase[$state] + $symbol]. If $actionBase[$state] is 0, the
67
84
  * action is defaulted, i.e. $actionDefault[$state] should be used instead. */
68
- protected $actionBase;
85
+ protected array $actionBase;
69
86
  /** @var int[] Table of actions. Indexed according to $actionBase comment. */
70
- protected $action;
87
+ protected array $action;
71
88
  /** @var int[] Table indexed analogously to $action. If $actionCheck[$actionBase[$state] + $symbol] != $symbol
72
89
  * then the action is defaulted, i.e. $actionDefault[$state] should be used instead. */
73
- protected $actionCheck;
90
+ protected array $actionCheck;
74
91
  /** @var int[] Map of states to their default action */
75
- protected $actionDefault;
92
+ protected array $actionDefault;
76
93
  /** @var callable[] Semantic action callbacks */
77
- protected $reduceCallbacks;
94
+ protected array $reduceCallbacks;
78
95
 
79
96
  /** @var int[] Map of non-terminals to a displacement into the $goto table. The corresponding goto state for this
80
97
  * non-terminal/state pair is $goto[$gotoBase[$nonTerminal] + $state] (unless defaulted) */
81
- protected $gotoBase;
98
+ protected array $gotoBase;
82
99
  /** @var int[] Table of states to goto after reduction. Indexed according to $gotoBase comment. */
83
- protected $goto;
100
+ protected array $goto;
84
101
  /** @var int[] Table indexed analogously to $goto. If $gotoCheck[$gotoBase[$nonTerminal] + $state] != $nonTerminal
85
102
  * then the goto state is defaulted, i.e. $gotoDefault[$nonTerminal] should be used. */
86
- protected $gotoCheck;
103
+ protected array $gotoCheck;
87
104
  /** @var int[] Map of non-terminals to the default state to goto after their reduction */
88
- protected $gotoDefault;
105
+ protected array $gotoDefault;
89
106
 
90
107
  /** @var int[] Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for
91
108
  * determining the state to goto after reduction. */
92
- protected $ruleToNonTerminal;
109
+ protected array $ruleToNonTerminal;
93
110
  /** @var int[] Map of rules to the length of their right-hand side, which is the number of elements that have to
94
111
  * be popped from the stack(s) on reduction. */
95
- protected $ruleToLength;
112
+ protected array $ruleToLength;
96
113
 
97
114
  /*
98
115
  * The following members are part of the parser state:
99
116
  */
100
117
 
101
- /** @var Lexer Lexer that is used when parsing */
102
- protected $lexer;
103
118
  /** @var mixed Temporary value containing the result of last semantic action (reduction) */
104
119
  protected $semValue;
105
- /** @var array Semantic value stack (contains values of tokens and semantic action results) */
106
- protected $semStack;
107
- /** @var array[] Start attribute stack */
108
- protected $startAttributeStack;
109
- /** @var array[] End attribute stack */
110
- protected $endAttributeStack;
111
- /** @var array End attributes of last *shifted* token */
112
- protected $endAttributes;
113
- /** @var array Start attributes of last *read* token */
114
- protected $lookaheadStartAttributes;
120
+ /** @var mixed[] Semantic value stack (contains values of tokens and semantic action results) */
121
+ protected array $semStack;
122
+ /** @var int[] Token start position stack */
123
+ protected array $tokenStartStack;
124
+ /** @var int[] Token end position stack */
125
+ protected array $tokenEndStack;
115
126
 
116
127
  /** @var ErrorHandler Error handler */
117
- protected $errorHandler;
128
+ protected ErrorHandler $errorHandler;
118
129
  /** @var int Error state, used to avoid error floods */
119
- protected $errorState;
130
+ protected int $errorState;
131
+
132
+ /** @var \SplObjectStorage<Array_, null>|null Array nodes created during parsing, for postprocessing of empty elements. */
133
+ protected ?\SplObjectStorage $createdArrays;
134
+
135
+ /** @var Token[] Tokens for the current parse */
136
+ protected array $tokens;
137
+ /** @var int Current position in token array */
138
+ protected int $tokenPos;
120
139
 
121
140
  /**
122
141
  * Initialize $reduceCallbacks map.
123
142
  */
124
- abstract protected function initReduceCallbacks();
143
+ abstract protected function initReduceCallbacks(): void;
125
144
 
126
145
  /**
127
146
  * Creates a parser instance.
128
147
  *
129
- * Options: Currently none.
148
+ * Options:
149
+ * * phpVersion: ?PhpVersion,
130
150
  *
131
151
  * @param Lexer $lexer A lexer
132
- * @param array $options Options array.
152
+ * @param PhpVersion $phpVersion PHP version to target, defaults to latest supported. This
153
+ * option is best-effort: Even if specified, parsing will generally assume the latest
154
+ * supported version and only adjust behavior in minor ways, for example by omitting
155
+ * errors in older versions and interpreting type hints as a name or identifier depending
156
+ * on version.
133
157
  */
134
- public function __construct(Lexer $lexer, array $options = []) {
158
+ public function __construct(Lexer $lexer, ?PhpVersion $phpVersion = null) {
135
159
  $this->lexer = $lexer;
136
-
137
- if (isset($options['throwOnError'])) {
138
- throw new \LogicException(
139
- '"throwOnError" is no longer supported, use "errorHandler" instead');
140
- }
160
+ $this->phpVersion = $phpVersion ?? PhpVersion::getNewestSupported();
141
161
 
142
162
  $this->initReduceCallbacks();
163
+ $this->phpTokenToSymbol = $this->createTokenMap();
164
+ $this->dropTokens = array_fill_keys(
165
+ [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_BAD_CHARACTER], true
166
+ );
143
167
  }
144
168
 
145
169
  /**
@@ -155,36 +179,55 @@ abstract class ParserAbstract implements Parser
155
179
  * @return Node\Stmt[]|null Array of statements (or null non-throwing error handler is used and
156
180
  * the parser was unable to recover from an error).
157
181
  */
158
- public function parse(string $code, ErrorHandler $errorHandler = null) {
159
- $this->errorHandler = $errorHandler ?: new ErrorHandler\Throwing;
182
+ public function parse(string $code, ?ErrorHandler $errorHandler = null): ?array {
183
+ $this->errorHandler = $errorHandler ?: new ErrorHandler\Throwing();
184
+ $this->createdArrays = new \SplObjectStorage();
160
185
 
161
- $this->lexer->startLexing($code, $this->errorHandler);
186
+ $this->tokens = $this->lexer->tokenize($code, $this->errorHandler);
162
187
  $result = $this->doParse();
163
188
 
189
+ // Report errors for any empty elements used inside arrays. This is delayed until after the main parse,
190
+ // because we don't know a priori whether a given array expression will be used in a destructuring context
191
+ // or not.
192
+ foreach ($this->createdArrays as $node) {
193
+ foreach ($node->items as $item) {
194
+ if ($item->value instanceof Expr\Error) {
195
+ $this->errorHandler->handleError(
196
+ new Error('Cannot use empty array elements in arrays', $item->getAttributes()));
197
+ }
198
+ }
199
+ }
200
+
164
201
  // Clear out some of the interior state, so we don't hold onto unnecessary
165
202
  // memory between uses of the parser
166
- $this->startAttributeStack = [];
167
- $this->endAttributeStack = [];
203
+ $this->tokenStartStack = [];
204
+ $this->tokenEndStack = [];
168
205
  $this->semStack = [];
169
206
  $this->semValue = null;
207
+ $this->createdArrays = null;
208
+
209
+ if ($result !== null) {
210
+ $traverser = new NodeTraverser(new CommentAnnotatingVisitor($this->tokens));
211
+ $traverser->traverse($result);
212
+ }
170
213
 
171
214
  return $result;
172
215
  }
173
216
 
174
- protected function doParse() {
217
+ public function getTokens(): array {
218
+ return $this->tokens;
219
+ }
220
+
221
+ /** @return Stmt[]|null */
222
+ protected function doParse(): ?array {
175
223
  // We start off with no lookahead-token
176
224
  $symbol = self::SYMBOL_NONE;
177
-
178
- // The attributes for a node are taken from the first and last token of the node.
179
- // From the first token only the startAttributes are taken and from the last only
180
- // the endAttributes. Both are merged using the array union operator (+).
181
- $startAttributes = [];
182
- $endAttributes = [];
183
- $this->endAttributes = $endAttributes;
225
+ $tokenValue = null;
226
+ $this->tokenPos = -1;
184
227
 
185
228
  // Keep stack of start and end attributes
186
- $this->startAttributeStack = [];
187
- $this->endAttributeStack = [$endAttributes];
229
+ $this->tokenStartStack = [];
230
+ $this->tokenEndStack = [0];
188
231
 
189
232
  // Start off in the initial state and keep a stack of previous states
190
233
  $state = 0;
@@ -205,26 +248,20 @@ abstract class ParserAbstract implements Parser
205
248
  $rule = $this->actionDefault[$state];
206
249
  } else {
207
250
  if ($symbol === self::SYMBOL_NONE) {
208
- // Fetch the next token id from the lexer and fetch additional info by-ref.
209
- // The end attributes are fetched into a temporary variable and only set once the token is really
210
- // shifted (not during read). Otherwise you would sometimes get off-by-one errors, when a rule is
211
- // reduced after a token was read but not yet shifted.
212
- $tokenId = $this->lexer->getNextToken($tokenValue, $startAttributes, $endAttributes);
213
-
214
- // map the lexer token id to the internally used symbols
215
- $symbol = $tokenId >= 0 && $tokenId < $this->tokenToSymbolMapSize
216
- ? $this->tokenToSymbol[$tokenId]
217
- : $this->invalidSymbol;
218
-
219
- if ($symbol === $this->invalidSymbol) {
251
+ do {
252
+ $token = $this->tokens[++$this->tokenPos];
253
+ $tokenId = $token->id;
254
+ } while (isset($this->dropTokens[$tokenId]));
255
+
256
+ // Map the lexer token id to the internally used symbols.
257
+ $tokenValue = $token->text;
258
+ if (!isset($this->phpTokenToSymbol[$tokenId])) {
220
259
  throw new \RangeException(sprintf(
221
260
  'The lexer returned an invalid token (id=%d, value=%s)',
222
261
  $tokenId, $tokenValue
223
262
  ));
224
263
  }
225
-
226
- // Allow productions to access the start attributes of the lookahead token.
227
- $this->lookaheadStartAttributes = $startAttributes;
264
+ $symbol = $this->phpTokenToSymbol[$tokenId];
228
265
 
229
266
  //$this->traceRead($symbol);
230
267
  }
@@ -249,9 +286,8 @@ abstract class ParserAbstract implements Parser
249
286
  ++$stackPos;
250
287
  $stateStack[$stackPos] = $state = $action;
251
288
  $this->semStack[$stackPos] = $tokenValue;
252
- $this->startAttributeStack[$stackPos] = $startAttributes;
253
- $this->endAttributeStack[$stackPos] = $endAttributes;
254
- $this->endAttributes = $endAttributes;
289
+ $this->tokenStartStack[$stackPos] = $this->tokenPos;
290
+ $this->tokenEndStack[$stackPos] = $this->tokenPos;
255
291
  $symbol = self::SYMBOL_NONE;
256
292
 
257
293
  if ($this->errorState) {
@@ -277,15 +313,22 @@ abstract class ParserAbstract implements Parser
277
313
  /* accept */
278
314
  //$this->traceAccept();
279
315
  return $this->semValue;
280
- } elseif ($rule !== $this->unexpectedTokenRule) {
316
+ }
317
+ if ($rule !== $this->unexpectedTokenRule) {
281
318
  /* reduce */
282
319
  //$this->traceReduce($rule);
283
320
 
321
+ $ruleLength = $this->ruleToLength[$rule];
284
322
  try {
285
- $this->reduceCallbacks[$rule]($stackPos);
323
+ $callback = $this->reduceCallbacks[$rule];
324
+ if ($callback !== null) {
325
+ $callback($this, $stackPos);
326
+ } elseif ($ruleLength > 0) {
327
+ $this->semValue = $this->semStack[$stackPos - $ruleLength + 1];
328
+ }
286
329
  } catch (Error $e) {
287
- if (-1 === $e->getStartLine() && isset($startAttributes['startLine'])) {
288
- $e->setStartLine($startAttributes['startLine']);
330
+ if (-1 === $e->getStartLine()) {
331
+ $e->setStartLine($this->tokens[$this->tokenPos]->line);
289
332
  }
290
333
 
291
334
  $this->emitError($e);
@@ -294,8 +337,7 @@ abstract class ParserAbstract implements Parser
294
337
  }
295
338
 
296
339
  /* Goto - shift nonterminal */
297
- $lastEndAttributes = $this->endAttributeStack[$stackPos];
298
- $ruleLength = $this->ruleToLength[$rule];
340
+ $lastTokenEnd = $this->tokenEndStack[$stackPos];
299
341
  $stackPos -= $ruleLength;
300
342
  $nonTerminal = $this->ruleToNonTerminal[$rule];
301
343
  $idx = $this->gotoBase[$nonTerminal] + $stateStack[$stackPos];
@@ -308,18 +350,19 @@ abstract class ParserAbstract implements Parser
308
350
  ++$stackPos;
309
351
  $stateStack[$stackPos] = $state;
310
352
  $this->semStack[$stackPos] = $this->semValue;
311
- $this->endAttributeStack[$stackPos] = $lastEndAttributes;
353
+ $this->tokenEndStack[$stackPos] = $lastTokenEnd;
312
354
  if ($ruleLength === 0) {
313
355
  // Empty productions use the start attributes of the lookahead token.
314
- $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
356
+ $this->tokenStartStack[$stackPos] = $this->tokenPos;
315
357
  }
316
358
  } else {
317
359
  /* error */
318
360
  switch ($this->errorState) {
319
361
  case 0:
320
362
  $msg = $this->getErrorMessage($symbol, $state);
321
- $this->emitError(new Error($msg, $startAttributes + $endAttributes));
363
+ $this->emitError(new Error($msg, $this->getAttributesForToken($this->tokenPos)));
322
364
  // Break missing intentionally
365
+ // no break
323
366
  case 1:
324
367
  case 2:
325
368
  $this->errorState = 3;
@@ -346,9 +389,8 @@ abstract class ParserAbstract implements Parser
346
389
 
347
390
  // We treat the error symbol as being empty, so we reset the end attributes
348
391
  // to the end attributes of the last non-error symbol
349
- $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
350
- $this->endAttributeStack[$stackPos] = $this->endAttributeStack[$stackPos - 1];
351
- $this->endAttributes = $this->endAttributeStack[$stackPos - 1];
392
+ $this->tokenStartStack[$stackPos] = $this->tokenPos;
393
+ $this->tokenEndStack[$stackPos] = $this->tokenEndStack[$stackPos - 1];
352
394
  break;
353
395
 
354
396
  case 3:
@@ -371,11 +413,9 @@ abstract class ParserAbstract implements Parser
371
413
  $rule = $state - $this->numNonLeafStates;
372
414
  }
373
415
  }
374
-
375
- throw new \RuntimeException('Reached end of parser loop');
376
416
  }
377
417
 
378
- protected function emitError(Error $error) {
418
+ protected function emitError(Error $error): void {
379
419
  $this->errorHandler->handleError($error);
380
420
  }
381
421
 
@@ -383,11 +423,11 @@ abstract class ParserAbstract implements Parser
383
423
  * Format error message including expected tokens.
384
424
  *
385
425
  * @param int $symbol Unexpected symbol
386
- * @param int $state State at time of error
426
+ * @param int $state State at time of error
387
427
  *
388
428
  * @return string Formatted error message
389
429
  */
390
- protected function getErrorMessage(int $symbol, int $state) : string {
430
+ protected function getErrorMessage(int $symbol, int $state): string {
391
431
  $expectedString = '';
392
432
  if ($expected = $this->getExpectedTokens($state)) {
393
433
  $expectedString = ', expecting ' . implode(' or ', $expected);
@@ -403,7 +443,7 @@ abstract class ParserAbstract implements Parser
403
443
  *
404
444
  * @return string[] Expected tokens. If too many, an empty array is returned.
405
445
  */
406
- protected function getExpectedTokens(int $state) : array {
446
+ protected function getExpectedTokens(int $state): array {
407
447
  $expected = [];
408
448
 
409
449
  $base = $this->actionBase[$state];
@@ -431,37 +471,79 @@ abstract class ParserAbstract implements Parser
431
471
  return $expected;
432
472
  }
433
473
 
474
+ /**
475
+ * Get attributes for a node with the given start and end token positions.
476
+ *
477
+ * @param int $tokenStartPos Token position the node starts at
478
+ * @param int $tokenEndPos Token position the node ends at
479
+ * @return array<string, mixed> Attributes
480
+ */
481
+ protected function getAttributes(int $tokenStartPos, int $tokenEndPos): array {
482
+ $startToken = $this->tokens[$tokenStartPos];
483
+ $afterEndToken = $this->tokens[$tokenEndPos + 1];
484
+ return [
485
+ 'startLine' => $startToken->line,
486
+ 'startTokenPos' => $tokenStartPos,
487
+ 'startFilePos' => $startToken->pos,
488
+ 'endLine' => $afterEndToken->line,
489
+ 'endTokenPos' => $tokenEndPos,
490
+ 'endFilePos' => $afterEndToken->pos - 1,
491
+ ];
492
+ }
493
+
494
+ /**
495
+ * Get attributes for a single token at the given token position.
496
+ *
497
+ * @return array<string, mixed> Attributes
498
+ */
499
+ protected function getAttributesForToken(int $tokenPos): array {
500
+ if ($tokenPos < \count($this->tokens) - 1) {
501
+ return $this->getAttributes($tokenPos, $tokenPos);
502
+ }
503
+
504
+ // Get attributes for the sentinel token.
505
+ $token = $this->tokens[$tokenPos];
506
+ return [
507
+ 'startLine' => $token->line,
508
+ 'startTokenPos' => $tokenPos,
509
+ 'startFilePos' => $token->pos,
510
+ 'endLine' => $token->line,
511
+ 'endTokenPos' => $tokenPos,
512
+ 'endFilePos' => $token->pos,
513
+ ];
514
+ }
515
+
434
516
  /*
435
517
  * Tracing functions used for debugging the parser.
436
518
  */
437
519
 
438
520
  /*
439
- protected function traceNewState($state, $symbol) {
521
+ protected function traceNewState($state, $symbol): void {
440
522
  echo '% State ' . $state
441
523
  . ', Lookahead ' . ($symbol == self::SYMBOL_NONE ? '--none--' : $this->symbolToName[$symbol]) . "\n";
442
524
  }
443
525
 
444
- protected function traceRead($symbol) {
526
+ protected function traceRead($symbol): void {
445
527
  echo '% Reading ' . $this->symbolToName[$symbol] . "\n";
446
528
  }
447
529
 
448
- protected function traceShift($symbol) {
530
+ protected function traceShift($symbol): void {
449
531
  echo '% Shift ' . $this->symbolToName[$symbol] . "\n";
450
532
  }
451
533
 
452
- protected function traceAccept() {
534
+ protected function traceAccept(): void {
453
535
  echo "% Accepted.\n";
454
536
  }
455
537
 
456
- protected function traceReduce($n) {
538
+ protected function traceReduce($n): void {
457
539
  echo '% Reduce by (' . $n . ') ' . $this->productions[$n] . "\n";
458
540
  }
459
541
 
460
- protected function tracePop($state) {
542
+ protected function tracePop($state): void {
461
543
  echo '% Recovering, uncovered state ' . $state . "\n";
462
544
  }
463
545
 
464
- protected function traceDiscard($symbol) {
546
+ protected function traceDiscard($symbol): void {
465
547
  echo '% Discard ' . $this->symbolToName[$symbol] . "\n";
466
548
  }
467
549
  */
@@ -476,13 +558,14 @@ abstract class ParserAbstract implements Parser
476
558
  * @param Node\Stmt[] $stmts
477
559
  * @return Node\Stmt[]
478
560
  */
479
- protected function handleNamespaces(array $stmts) : array {
561
+ protected function handleNamespaces(array $stmts): array {
480
562
  $hasErrored = false;
481
563
  $style = $this->getNamespacingStyle($stmts);
482
564
  if (null === $style) {
483
565
  // not namespaced, nothing to do
484
566
  return $stmts;
485
- } elseif ('brace' === $style) {
567
+ }
568
+ if ('brace' === $style) {
486
569
  // For braced namespaces we only have to check that there are no invalid statements between the namespaces
487
570
  $afterFirstNamespace = false;
488
571
  foreach ($stmts as $stmt) {
@@ -500,7 +583,7 @@ abstract class ParserAbstract implements Parser
500
583
  } else {
501
584
  // For semicolon namespaces we have to move the statements after a namespace declaration into ->stmts
502
585
  $resultStmts = [];
503
- $targetStmts =& $resultStmts;
586
+ $targetStmts = &$resultStmts;
504
587
  $lastNs = null;
505
588
  foreach ($stmts as $stmt) {
506
589
  if ($stmt instanceof Node\Stmt\Namespace_) {
@@ -509,12 +592,12 @@ abstract class ParserAbstract implements Parser
509
592
  }
510
593
  if ($stmt->stmts === null) {
511
594
  $stmt->stmts = [];
512
- $targetStmts =& $stmt->stmts;
595
+ $targetStmts = &$stmt->stmts;
513
596
  $resultStmts[] = $stmt;
514
597
  } else {
515
598
  // This handles the invalid case of mixed style namespaces
516
599
  $resultStmts[] = $stmt;
517
- $targetStmts =& $resultStmts;
600
+ $targetStmts = &$resultStmts;
518
601
  }
519
602
  $lastNs = $stmt;
520
603
  } elseif ($stmt instanceof Node\Stmt\HaltCompiler) {
@@ -531,7 +614,7 @@ abstract class ParserAbstract implements Parser
531
614
  }
532
615
  }
533
616
 
534
- private function fixupNamespaceAttributes(Node\Stmt\Namespace_ $stmt) {
617
+ private function fixupNamespaceAttributes(Node\Stmt\Namespace_ $stmt): void {
535
618
  // We moved the statements into the namespace node, as such the end of the namespace node
536
619
  // needs to be extended to the end of the statements.
537
620
  if (empty($stmt->stmts)) {
@@ -549,6 +632,22 @@ abstract class ParserAbstract implements Parser
549
632
  }
550
633
  }
551
634
 
635
+ /** @return array<string, mixed> */
636
+ private function getNamespaceErrorAttributes(Namespace_ $node): array {
637
+ $attrs = $node->getAttributes();
638
+ // Adjust end attributes to only cover the "namespace" keyword, not the whole namespace.
639
+ if (isset($attrs['startLine'])) {
640
+ $attrs['endLine'] = $attrs['startLine'];
641
+ }
642
+ if (isset($attrs['startTokenPos'])) {
643
+ $attrs['endTokenPos'] = $attrs['startTokenPos'];
644
+ }
645
+ if (isset($attrs['startFilePos'])) {
646
+ $attrs['endFilePos'] = $attrs['startFilePos'] + \strlen('namespace') - 1;
647
+ }
648
+ return $attrs;
649
+ }
650
+
552
651
  /**
553
652
  * Determine namespacing style (semicolon or brace)
554
653
  *
@@ -556,7 +655,7 @@ abstract class ParserAbstract implements Parser
556
655
  *
557
656
  * @return null|string One of "semicolon", "brace" or null (no namespaces)
558
657
  */
559
- private function getNamespacingStyle(array $stmts) {
658
+ private function getNamespacingStyle(array $stmts): ?string {
560
659
  $style = null;
561
660
  $hasNotAllowedStmts = false;
562
661
  foreach ($stmts as $i => $stmt) {
@@ -567,13 +666,13 @@ abstract class ParserAbstract implements Parser
567
666
  if ($hasNotAllowedStmts) {
568
667
  $this->emitError(new Error(
569
668
  'Namespace declaration statement has to be the very first statement in the script',
570
- $stmt->getLine() // Avoid marking the entire namespace as an error
669
+ $this->getNamespaceErrorAttributes($stmt)
571
670
  ));
572
671
  }
573
672
  } elseif ($style !== $currentStyle) {
574
673
  $this->emitError(new Error(
575
674
  'Cannot mix bracketed namespace declarations with unbracketed namespace declarations',
576
- $stmt->getLine() // Avoid marking the entire namespace as an error
675
+ $this->getNamespaceErrorAttributes($stmt)
577
676
  ));
578
677
  // Treat like semicolon style for namespace normalization
579
678
  return 'semicolon';
@@ -599,83 +698,14 @@ abstract class ParserAbstract implements Parser
599
698
  return $style;
600
699
  }
601
700
 
602
- /**
603
- * Fix up parsing of static property calls in PHP 5.
604
- *
605
- * In PHP 5 A::$b[c][d] and A::$b[c][d]() have very different interpretation. The former is
606
- * interpreted as (A::$b)[c][d], while the latter is the same as A::{$b[c][d]}(). We parse the
607
- * latter as the former initially and this method fixes the AST into the correct form when we
608
- * encounter the "()".
609
- *
610
- * @param Node\Expr\StaticPropertyFetch|Node\Expr\ArrayDimFetch $prop
611
- * @param Node\Arg[] $args
612
- * @param array $attributes
613
- *
614
- * @return Expr\StaticCall
615
- */
616
- protected function fixupPhp5StaticPropCall($prop, array $args, array $attributes) : Expr\StaticCall {
617
- if ($prop instanceof Node\Expr\StaticPropertyFetch) {
618
- $name = $prop->name instanceof VarLikeIdentifier
619
- ? $prop->name->toString() : $prop->name;
620
- $var = new Expr\Variable($name, $prop->name->getAttributes());
621
- return new Expr\StaticCall($prop->class, $var, $args, $attributes);
622
- } elseif ($prop instanceof Node\Expr\ArrayDimFetch) {
623
- $tmp = $prop;
624
- while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
625
- $tmp = $tmp->var;
626
- }
627
-
628
- /** @var Expr\StaticPropertyFetch $staticProp */
629
- $staticProp = $tmp->var;
630
-
631
- // Set start attributes to attributes of innermost node
632
- $tmp = $prop;
633
- $this->fixupStartAttributes($tmp, $staticProp->name);
634
- while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
635
- $tmp = $tmp->var;
636
- $this->fixupStartAttributes($tmp, $staticProp->name);
637
- }
638
-
639
- $name = $staticProp->name instanceof VarLikeIdentifier
640
- ? $staticProp->name->toString() : $staticProp->name;
641
- $tmp->var = new Expr\Variable($name, $staticProp->name->getAttributes());
642
- return new Expr\StaticCall($staticProp->class, $prop, $args, $attributes);
643
- } else {
644
- throw new \Exception;
645
- }
646
- }
647
-
648
- protected function fixupStartAttributes(Node $to, Node $from) {
649
- $startAttributes = ['startLine', 'startFilePos', 'startTokenPos'];
650
- foreach ($startAttributes as $startAttribute) {
651
- if ($from->hasAttribute($startAttribute)) {
652
- $to->setAttribute($startAttribute, $from->getAttribute($startAttribute));
653
- }
654
- }
655
- }
656
-
701
+ /** @return Name|Identifier */
657
702
  protected function handleBuiltinTypes(Name $name) {
658
- $builtinTypes = [
659
- 'bool' => true,
660
- 'int' => true,
661
- 'float' => true,
662
- 'string' => true,
663
- 'iterable' => true,
664
- 'void' => true,
665
- 'object' => true,
666
- 'null' => true,
667
- 'false' => true,
668
- 'mixed' => true,
669
- 'never' => true,
670
- 'true' => true,
671
- ];
672
-
673
703
  if (!$name->isUnqualified()) {
674
704
  return $name;
675
705
  }
676
706
 
677
707
  $lowerName = $name->toLowerString();
678
- if (!isset($builtinTypes[$lowerName])) {
708
+ if (!$this->phpVersion->supportsBuiltinType($lowerName)) {
679
709
  return $name;
680
710
  }
681
711
 
@@ -685,16 +715,15 @@ abstract class ParserAbstract implements Parser
685
715
  /**
686
716
  * Get combined start and end attributes at a stack location
687
717
  *
688
- * @param int $pos Stack location
718
+ * @param int $stackPos Stack location
689
719
  *
690
- * @return array Combined start and end attributes
720
+ * @return array<string, mixed> Combined start and end attributes
691
721
  */
692
- protected function getAttributesAt(int $pos) : array {
693
- return $this->startAttributeStack[$pos] + $this->endAttributeStack[$pos];
722
+ protected function getAttributesAt(int $stackPos): array {
723
+ return $this->getAttributes($this->tokenStartStack[$stackPos], $this->tokenEndStack[$stackPos]);
694
724
  }
695
725
 
696
- protected function getFloatCastKind(string $cast): int
697
- {
726
+ protected function getFloatCastKind(string $cast): int {
698
727
  $cast = strtolower($cast);
699
728
  if (strpos($cast, 'float') !== false) {
700
729
  return Double::KIND_FLOAT;
@@ -707,23 +736,24 @@ abstract class ParserAbstract implements Parser
707
736
  return Double::KIND_DOUBLE;
708
737
  }
709
738
 
710
- protected function parseLNumber($str, $attributes, $allowInvalidOctal = false) {
739
+ /** @param array<string, mixed> $attributes */
740
+ protected function parseLNumber(string $str, array $attributes, bool $allowInvalidOctal = false): Int_ {
711
741
  try {
712
- return LNumber::fromString($str, $attributes, $allowInvalidOctal);
742
+ return Int_::fromString($str, $attributes, $allowInvalidOctal);
713
743
  } catch (Error $error) {
714
744
  $this->emitError($error);
715
745
  // Use dummy value
716
- return new LNumber(0, $attributes);
746
+ return new Int_(0, $attributes);
717
747
  }
718
748
  }
719
749
 
720
750
  /**
721
751
  * Parse a T_NUM_STRING token into either an integer or string node.
722
752
  *
723
- * @param string $str Number string
724
- * @param array $attributes Attributes
753
+ * @param string $str Number string
754
+ * @param array<string, mixed> $attributes Attributes
725
755
  *
726
- * @return LNumber|String_ Integer or string node.
756
+ * @return Int_|String_ Integer or string node.
727
757
  */
728
758
  protected function parseNumString(string $str, array $attributes) {
729
759
  if (!preg_match('/^(?:0|-?[1-9][0-9]*)$/', $str)) {
@@ -735,13 +765,14 @@ abstract class ParserAbstract implements Parser
735
765
  return new String_($str, $attributes);
736
766
  }
737
767
 
738
- return new LNumber($num, $attributes);
768
+ return new Int_($num, $attributes);
739
769
  }
740
770
 
771
+ /** @param array<string, mixed> $attributes */
741
772
  protected function stripIndentation(
742
773
  string $string, int $indentLen, string $indentChar,
743
774
  bool $newlineAtStart, bool $newlineAtEnd, array $attributes
744
- ) {
775
+ ): string {
745
776
  if ($indentLen === 0) {
746
777
  return $string;
747
778
  }
@@ -770,10 +801,15 @@ abstract class ParserAbstract implements Parser
770
801
  );
771
802
  }
772
803
 
804
+ /**
805
+ * @param string|(Expr|InterpolatedStringPart)[] $contents
806
+ * @param array<string, mixed> $attributes
807
+ * @param array<string, mixed> $endTokenAttributes
808
+ */
773
809
  protected function parseDocString(
774
810
  string $startToken, $contents, string $endToken,
775
811
  array $attributes, array $endTokenAttributes, bool $parseUnicodeEscape
776
- ) {
812
+ ): Expr {
777
813
  $kind = strpos($startToken, "'") === false
778
814
  ? String_::KIND_HEREDOC : String_::KIND_NOWDOC;
779
815
 
@@ -807,6 +843,7 @@ abstract class ParserAbstract implements Parser
807
843
 
808
844
  if (\is_string($contents)) {
809
845
  if ($contents === '') {
846
+ $attributes['rawValue'] = $contents;
810
847
  return new String_('', $attributes);
811
848
  }
812
849
 
@@ -814,6 +851,7 @@ abstract class ParserAbstract implements Parser
814
851
  $contents, $indentLen, $indentChar, true, true, $attributes
815
852
  );
816
853
  $contents = preg_replace('~(\r\n|\n|\r)\z~', '', $contents);
854
+ $attributes['rawValue'] = $contents;
817
855
 
818
856
  if ($kind === String_::KIND_HEREDOC) {
819
857
  $contents = String_::parseEscapeSequences($contents, null, $parseUnicodeEscape);
@@ -822,7 +860,7 @@ abstract class ParserAbstract implements Parser
822
860
  return new String_($contents, $attributes);
823
861
  } else {
824
862
  assert(count($contents) > 0);
825
- if (!$contents[0] instanceof Node\Scalar\EncapsedStringPart) {
863
+ if (!$contents[0] instanceof Node\InterpolatedStringPart) {
826
864
  // If there is no leading encapsed string part, pretend there is an empty one
827
865
  $this->stripIndentation(
828
866
  '', $indentLen, $indentChar, true, false, $contents[0]->getAttributes()
@@ -831,56 +869,139 @@ abstract class ParserAbstract implements Parser
831
869
 
832
870
  $newContents = [];
833
871
  foreach ($contents as $i => $part) {
834
- if ($part instanceof Node\Scalar\EncapsedStringPart) {
872
+ if ($part instanceof Node\InterpolatedStringPart) {
835
873
  $isLast = $i === \count($contents) - 1;
836
874
  $part->value = $this->stripIndentation(
837
875
  $part->value, $indentLen, $indentChar,
838
876
  $i === 0, $isLast, $part->getAttributes()
839
877
  );
840
- $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape);
841
878
  if ($isLast) {
842
879
  $part->value = preg_replace('~(\r\n|\n|\r)\z~', '', $part->value);
843
880
  }
881
+ $part->setAttribute('rawValue', $part->value);
882
+ $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape);
844
883
  if ('' === $part->value) {
845
884
  continue;
846
885
  }
847
886
  }
848
887
  $newContents[] = $part;
849
888
  }
850
- return new Encapsed($newContents, $attributes);
889
+ return new InterpolatedString($newContents, $attributes);
851
890
  }
852
891
  }
853
892
 
893
+ protected function createCommentFromToken(Token $token, int $tokenPos): Comment {
894
+ assert($token->id === \T_COMMENT || $token->id == \T_DOC_COMMENT);
895
+ return \T_DOC_COMMENT === $token->id
896
+ ? new Comment\Doc($token->text, $token->line, $token->pos, $tokenPos,
897
+ $token->getEndLine(), $token->getEndPos() - 1, $tokenPos)
898
+ : new Comment($token->text, $token->line, $token->pos, $tokenPos,
899
+ $token->getEndLine(), $token->getEndPos() - 1, $tokenPos);
900
+ }
901
+
854
902
  /**
855
- * Create attributes for a zero-length common-capturing nop.
856
- *
857
- * @param Comment[] $comments
858
- * @return array
903
+ * Get last comment before the given token position, if any
859
904
  */
860
- protected function createCommentNopAttributes(array $comments) {
861
- $comment = $comments[count($comments) - 1];
905
+ protected function getCommentBeforeToken(int $tokenPos): ?Comment {
906
+ while (--$tokenPos >= 0) {
907
+ $token = $this->tokens[$tokenPos];
908
+ if (!isset($this->dropTokens[$token->id])) {
909
+ break;
910
+ }
911
+
912
+ if ($token->id === \T_COMMENT || $token->id === \T_DOC_COMMENT) {
913
+ return $this->createCommentFromToken($token, $tokenPos);
914
+ }
915
+ }
916
+ return null;
917
+ }
918
+
919
+ /**
920
+ * Create a zero-length nop to capture preceding comments, if any.
921
+ */
922
+ protected function maybeCreateZeroLengthNop(int $tokenPos): ?Nop {
923
+ $comment = $this->getCommentBeforeToken($tokenPos);
924
+ if ($comment === null) {
925
+ return null;
926
+ }
927
+
862
928
  $commentEndLine = $comment->getEndLine();
863
929
  $commentEndFilePos = $comment->getEndFilePos();
864
930
  $commentEndTokenPos = $comment->getEndTokenPos();
931
+ $attributes = [
932
+ 'startLine' => $commentEndLine,
933
+ 'endLine' => $commentEndLine,
934
+ 'startFilePos' => $commentEndFilePos + 1,
935
+ 'endFilePos' => $commentEndFilePos,
936
+ 'startTokenPos' => $commentEndTokenPos + 1,
937
+ 'endTokenPos' => $commentEndTokenPos,
938
+ ];
939
+ return new Nop($attributes);
940
+ }
865
941
 
866
- $attributes = ['comments' => $comments];
867
- if (-1 !== $commentEndLine) {
868
- $attributes['startLine'] = $commentEndLine;
869
- $attributes['endLine'] = $commentEndLine;
942
+ protected function maybeCreateNop(int $tokenStartPos, int $tokenEndPos): ?Nop {
943
+ if ($this->getCommentBeforeToken($tokenStartPos) === null) {
944
+ return null;
870
945
  }
871
- if (-1 !== $commentEndFilePos) {
872
- $attributes['startFilePos'] = $commentEndFilePos + 1;
873
- $attributes['endFilePos'] = $commentEndFilePos;
946
+ return new Nop($this->getAttributes($tokenStartPos, $tokenEndPos));
947
+ }
948
+
949
+ protected function handleHaltCompiler(): string {
950
+ // Prevent the lexer from returning any further tokens.
951
+ $nextToken = $this->tokens[$this->tokenPos + 1];
952
+ $this->tokenPos = \count($this->tokens) - 2;
953
+
954
+ // Return text after __halt_compiler.
955
+ return $nextToken->id === \T_INLINE_HTML ? $nextToken->text : '';
956
+ }
957
+
958
+ protected function inlineHtmlHasLeadingNewline(int $stackPos): bool {
959
+ $tokenPos = $this->tokenStartStack[$stackPos];
960
+ $token = $this->tokens[$tokenPos];
961
+ assert($token->id == \T_INLINE_HTML);
962
+ if ($tokenPos > 0) {
963
+ $prevToken = $this->tokens[$tokenPos - 1];
964
+ assert($prevToken->id == \T_CLOSE_TAG);
965
+ return false !== strpos($prevToken->text, "\n")
966
+ || false !== strpos($prevToken->text, "\r");
874
967
  }
875
- if (-1 !== $commentEndTokenPos) {
876
- $attributes['startTokenPos'] = $commentEndTokenPos + 1;
877
- $attributes['endTokenPos'] = $commentEndTokenPos;
968
+ return true;
969
+ }
970
+
971
+ /**
972
+ * @return array<string, mixed>
973
+ */
974
+ protected function createEmptyElemAttributes(int $tokenPos): array {
975
+ return $this->getAttributesForToken($tokenPos);
976
+ }
977
+
978
+ protected function fixupArrayDestructuring(Array_ $node): Expr\List_ {
979
+ $this->createdArrays->detach($node);
980
+ return new Expr\List_(array_map(function (Node\ArrayItem $item) {
981
+ if ($item->value instanceof Expr\Error) {
982
+ // We used Error as a placeholder for empty elements, which are legal for destructuring.
983
+ return null;
984
+ }
985
+ if ($item->value instanceof Array_) {
986
+ return new Node\ArrayItem(
987
+ $this->fixupArrayDestructuring($item->value),
988
+ $item->key, $item->byRef, $item->getAttributes());
989
+ }
990
+ return $item;
991
+ }, $node->items), ['kind' => Expr\List_::KIND_ARRAY] + $node->getAttributes());
992
+ }
993
+
994
+ protected function postprocessList(Expr\List_ $node): void {
995
+ foreach ($node->items as $i => $item) {
996
+ if ($item->value instanceof Expr\Error) {
997
+ // We used Error as a placeholder for empty elements, which are legal for destructuring.
998
+ $node->items[$i] = null;
999
+ }
878
1000
  }
879
- return $attributes;
880
1001
  }
881
1002
 
882
1003
  /** @param ElseIf_|Else_ $node */
883
- protected function fixupAlternativeElse($node) {
1004
+ protected function fixupAlternativeElse($node): void {
884
1005
  // Make sure a trailing nop statement carrying comments is part of the node.
885
1006
  $numStmts = \count($node->stmts);
886
1007
  if ($numStmts !== 0 && $node->stmts[$numStmts - 1] instanceof Nop) {
@@ -897,26 +1018,26 @@ abstract class ParserAbstract implements Parser
897
1018
  }
898
1019
  }
899
1020
 
900
- protected function checkClassModifier($a, $b, $modifierPos) {
1021
+ protected function checkClassModifier(int $a, int $b, int $modifierPos): void {
901
1022
  try {
902
- Class_::verifyClassModifier($a, $b);
1023
+ Modifiers::verifyClassModifier($a, $b);
903
1024
  } catch (Error $error) {
904
1025
  $error->setAttributes($this->getAttributesAt($modifierPos));
905
1026
  $this->emitError($error);
906
1027
  }
907
1028
  }
908
1029
 
909
- protected function checkModifier($a, $b, $modifierPos) {
1030
+ protected function checkModifier(int $a, int $b, int $modifierPos): void {
910
1031
  // Jumping through some hoops here because verifyModifier() is also used elsewhere
911
1032
  try {
912
- Class_::verifyModifier($a, $b);
1033
+ Modifiers::verifyModifier($a, $b);
913
1034
  } catch (Error $error) {
914
1035
  $error->setAttributes($this->getAttributesAt($modifierPos));
915
1036
  $this->emitError($error);
916
1037
  }
917
1038
  }
918
1039
 
919
- protected function checkParam(Param $node) {
1040
+ protected function checkParam(Param $node): void {
920
1041
  if ($node->variadic && null !== $node->default) {
921
1042
  $this->emitError(new Error(
922
1043
  'Variadic parameter cannot have a default value',
@@ -925,7 +1046,7 @@ abstract class ParserAbstract implements Parser
925
1046
  }
926
1047
  }
927
1048
 
928
- protected function checkTryCatch(TryCatch $node) {
1049
+ protected function checkTryCatch(TryCatch $node): void {
929
1050
  if (empty($node->catches) && null === $node->finally) {
930
1051
  $this->emitError(new Error(
931
1052
  'Cannot use try without catch or finally', $node->getAttributes()
@@ -933,7 +1054,7 @@ abstract class ParserAbstract implements Parser
933
1054
  }
934
1055
  }
935
1056
 
936
- protected function checkNamespace(Namespace_ $node) {
1057
+ protected function checkNamespace(Namespace_ $node): void {
937
1058
  if (null !== $node->stmts) {
938
1059
  foreach ($node->stmts as $stmt) {
939
1060
  if ($stmt instanceof Namespace_) {
@@ -945,7 +1066,7 @@ abstract class ParserAbstract implements Parser
945
1066
  }
946
1067
  }
947
1068
 
948
- private function checkClassName($name, $namePos) {
1069
+ private function checkClassName(?Identifier $name, int $namePos): void {
949
1070
  if (null !== $name && $name->isSpecialClassName()) {
950
1071
  $this->emitError(new Error(
951
1072
  sprintf('Cannot use \'%s\' as class name as it is reserved', $name),
@@ -954,7 +1075,8 @@ abstract class ParserAbstract implements Parser
954
1075
  }
955
1076
  }
956
1077
 
957
- private function checkImplementedInterfaces(array $interfaces) {
1078
+ /** @param Name[] $interfaces */
1079
+ private function checkImplementedInterfaces(array $interfaces): void {
958
1080
  foreach ($interfaces as $interface) {
959
1081
  if ($interface->isSpecialClassName()) {
960
1082
  $this->emitError(new Error(
@@ -965,7 +1087,7 @@ abstract class ParserAbstract implements Parser
965
1087
  }
966
1088
  }
967
1089
 
968
- protected function checkClass(Class_ $node, $namePos) {
1090
+ protected function checkClass(Class_ $node, int $namePos): void {
969
1091
  $this->checkClassName($node->name, $namePos);
970
1092
 
971
1093
  if ($node->extends && $node->extends->isSpecialClassName()) {
@@ -978,18 +1100,18 @@ abstract class ParserAbstract implements Parser
978
1100
  $this->checkImplementedInterfaces($node->implements);
979
1101
  }
980
1102
 
981
- protected function checkInterface(Interface_ $node, $namePos) {
1103
+ protected function checkInterface(Interface_ $node, int $namePos): void {
982
1104
  $this->checkClassName($node->name, $namePos);
983
1105
  $this->checkImplementedInterfaces($node->extends);
984
1106
  }
985
1107
 
986
- protected function checkEnum(Enum_ $node, $namePos) {
1108
+ protected function checkEnum(Enum_ $node, int $namePos): void {
987
1109
  $this->checkClassName($node->name, $namePos);
988
1110
  $this->checkImplementedInterfaces($node->implements);
989
1111
  }
990
1112
 
991
- protected function checkClassMethod(ClassMethod $node, $modifierPos) {
992
- if ($node->flags & Class_::MODIFIER_STATIC) {
1113
+ protected function checkClassMethod(ClassMethod $node, int $modifierPos): void {
1114
+ if ($node->flags & Modifiers::STATIC) {
993
1115
  switch ($node->name->toLowerString()) {
994
1116
  case '__construct':
995
1117
  $this->emitError(new Error(
@@ -1009,52 +1131,164 @@ abstract class ParserAbstract implements Parser
1009
1131
  }
1010
1132
  }
1011
1133
 
1012
- if ($node->flags & Class_::MODIFIER_READONLY) {
1134
+ if ($node->flags & Modifiers::READONLY) {
1013
1135
  $this->emitError(new Error(
1014
1136
  sprintf('Method %s() cannot be readonly', $node->name),
1015
1137
  $this->getAttributesAt($modifierPos)));
1016
1138
  }
1017
1139
  }
1018
1140
 
1019
- protected function checkClassConst(ClassConst $node, $modifierPos) {
1020
- if ($node->flags & Class_::MODIFIER_STATIC) {
1141
+ protected function checkClassConst(ClassConst $node, int $modifierPos): void {
1142
+ foreach ([Modifiers::STATIC, Modifiers::ABSTRACT, Modifiers::READONLY] as $modifier) {
1143
+ if ($node->flags & $modifier) {
1144
+ $this->emitError(new Error(
1145
+ "Cannot use '" . Modifiers::toString($modifier) . "' as constant modifier",
1146
+ $this->getAttributesAt($modifierPos)));
1147
+ }
1148
+ }
1149
+ }
1150
+
1151
+ protected function checkUseUse(UseItem $node, int $namePos): void {
1152
+ if ($node->alias && $node->alias->isSpecialClassName()) {
1021
1153
  $this->emitError(new Error(
1022
- "Cannot use 'static' as constant modifier",
1023
- $this->getAttributesAt($modifierPos)));
1154
+ sprintf(
1155
+ 'Cannot use %s as %s because \'%2$s\' is a special class name',
1156
+ $node->name, $node->alias
1157
+ ),
1158
+ $this->getAttributesAt($namePos)
1159
+ ));
1024
1160
  }
1025
- if ($node->flags & Class_::MODIFIER_ABSTRACT) {
1161
+ }
1162
+
1163
+ protected function checkPropertyHooksForMultiProperty(Property $property, int $hookPos): void {
1164
+ if (count($property->props) > 1) {
1026
1165
  $this->emitError(new Error(
1027
- "Cannot use 'abstract' as constant modifier",
1028
- $this->getAttributesAt($modifierPos)));
1166
+ 'Cannot use hooks when declaring multiple properties', $this->getAttributesAt($hookPos)));
1029
1167
  }
1030
- if ($node->flags & Class_::MODIFIER_READONLY) {
1168
+ }
1169
+
1170
+ /** @param PropertyHook[] $hooks */
1171
+ protected function checkEmptyPropertyHookList(array $hooks, int $hookPos): void {
1172
+ if (empty($hooks)) {
1031
1173
  $this->emitError(new Error(
1032
- "Cannot use 'readonly' as constant modifier",
1033
- $this->getAttributesAt($modifierPos)));
1174
+ 'Property hook list cannot be empty', $this->getAttributesAt($hookPos)));
1034
1175
  }
1035
1176
  }
1036
1177
 
1037
- protected function checkProperty(Property $node, $modifierPos) {
1038
- if ($node->flags & Class_::MODIFIER_ABSTRACT) {
1039
- $this->emitError(new Error('Properties cannot be declared abstract',
1040
- $this->getAttributesAt($modifierPos)));
1178
+ protected function checkPropertyHook(PropertyHook $hook, ?int $paramListPos): void {
1179
+ $name = $hook->name->toLowerString();
1180
+ if ($name !== 'get' && $name !== 'set') {
1181
+ $this->emitError(new Error(
1182
+ 'Unknown hook "' . $hook->name . '", expected "get" or "set"',
1183
+ $hook->name->getAttributes()));
1184
+ }
1185
+ if ($name === 'get' && $paramListPos !== null) {
1186
+ $this->emitError(new Error(
1187
+ 'get hook must not have a parameter list', $this->getAttributesAt($paramListPos)));
1041
1188
  }
1189
+ }
1042
1190
 
1043
- if ($node->flags & Class_::MODIFIER_FINAL) {
1044
- $this->emitError(new Error('Properties cannot be declared final',
1191
+ protected function checkPropertyHookModifiers(int $a, int $b, int $modifierPos): void {
1192
+ try {
1193
+ Modifiers::verifyModifier($a, $b);
1194
+ } catch (Error $error) {
1195
+ $error->setAttributes($this->getAttributesAt($modifierPos));
1196
+ $this->emitError($error);
1197
+ }
1198
+
1199
+ if ($b != Modifiers::FINAL) {
1200
+ $this->emitError(new Error(
1201
+ 'Cannot use the ' . Modifiers::toString($b) . ' modifier on a property hook',
1045
1202
  $this->getAttributesAt($modifierPos)));
1046
1203
  }
1047
1204
  }
1048
1205
 
1049
- protected function checkUseUse(UseUse $node, $namePos) {
1050
- if ($node->alias && $node->alias->isSpecialClassName()) {
1206
+ protected function checkConstantAttributes(Const_ $node): void {
1207
+ if ($node->attrGroups !== [] && count($node->consts) > 1) {
1051
1208
  $this->emitError(new Error(
1052
- sprintf(
1053
- 'Cannot use %s as %s because \'%2$s\' is a special class name',
1054
- $node->name, $node->alias
1055
- ),
1056
- $this->getAttributesAt($namePos)
1057
- ));
1209
+ 'Cannot use attributes on multiple constants at once', $node->getAttributes()));
1210
+ }
1211
+ }
1212
+
1213
+ /**
1214
+ * @param Property|Param $node
1215
+ */
1216
+ protected function addPropertyNameToHooks(Node $node): void {
1217
+ if ($node instanceof Property) {
1218
+ $name = $node->props[0]->name->toString();
1219
+ } else {
1220
+ $name = $node->var->name;
1221
+ }
1222
+ foreach ($node->hooks as $hook) {
1223
+ $hook->setAttribute('propertyName', $name);
1224
+ }
1225
+ }
1226
+
1227
+ /** @param array<Node\Arg|Node\VariadicPlaceholder> $args */
1228
+ private function isSimpleExit(array $args): bool {
1229
+ if (\count($args) === 0) {
1230
+ return true;
1231
+ }
1232
+ if (\count($args) === 1) {
1233
+ $arg = $args[0];
1234
+ return $arg instanceof Arg && $arg->name === null &&
1235
+ $arg->byRef === false && $arg->unpack === false;
1058
1236
  }
1237
+ return false;
1238
+ }
1239
+
1240
+ /**
1241
+ * @param array<Node\Arg|Node\VariadicPlaceholder> $args
1242
+ * @param array<string, mixed> $attrs
1243
+ */
1244
+ protected function createExitExpr(string $name, int $namePos, array $args, array $attrs): Expr {
1245
+ if ($this->isSimpleExit($args)) {
1246
+ // Create Exit node for backwards compatibility.
1247
+ $attrs['kind'] = strtolower($name) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
1248
+ return new Expr\Exit_(\count($args) === 1 ? $args[0]->value : null, $attrs);
1249
+ }
1250
+ return new Expr\FuncCall(new Name($name, $this->getAttributesAt($namePos)), $args, $attrs);
1251
+ }
1252
+
1253
+ /**
1254
+ * Creates the token map.
1255
+ *
1256
+ * The token map maps the PHP internal token identifiers
1257
+ * to the identifiers used by the Parser. Additionally it
1258
+ * maps T_OPEN_TAG_WITH_ECHO to T_ECHO and T_CLOSE_TAG to ';'.
1259
+ *
1260
+ * @return array<int, int> The token map
1261
+ */
1262
+ protected function createTokenMap(): array {
1263
+ $tokenMap = [];
1264
+
1265
+ // Single-char tokens use an identity mapping.
1266
+ for ($i = 0; $i < 256; ++$i) {
1267
+ $tokenMap[$i] = $i;
1268
+ }
1269
+
1270
+ foreach ($this->symbolToName as $name) {
1271
+ if ($name[0] === 'T') {
1272
+ $tokenMap[\constant($name)] = constant(static::class . '::' . $name);
1273
+ }
1274
+ }
1275
+
1276
+ // T_OPEN_TAG_WITH_ECHO with dropped T_OPEN_TAG results in T_ECHO
1277
+ $tokenMap[\T_OPEN_TAG_WITH_ECHO] = static::T_ECHO;
1278
+ // T_CLOSE_TAG is equivalent to ';'
1279
+ $tokenMap[\T_CLOSE_TAG] = ord(';');
1280
+
1281
+ // We have created a map from PHP token IDs to external symbol IDs.
1282
+ // Now map them to the internal symbol ID.
1283
+ $fullTokenMap = [];
1284
+ foreach ($tokenMap as $phpToken => $extSymbol) {
1285
+ $intSymbol = $this->tokenToSymbol[$extSymbol];
1286
+ if ($intSymbol === $this->invalidSymbol) {
1287
+ continue;
1288
+ }
1289
+ $fullTokenMap[$phpToken] = $intSymbol;
1290
+ }
1291
+
1292
+ return $fullTokenMap;
1059
1293
  }
1060
1294
  }