@appthreat/atom 1.8.1 → 1.8.2

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 (298) hide show
  1. package/package.json +1 -1
  2. package/phpastgen.js +7 -1
  3. package/plugins/autoload.php +1 -1
  4. package/plugins/bin/atom +1 -1
  5. package/plugins/bin/atom.bat +1 -1
  6. package/plugins/composer/autoload_classmap.php +18 -18
  7. package/plugins/composer/autoload_real.php +4 -4
  8. package/plugins/composer/autoload_static.php +22 -22
  9. package/plugins/composer/installed.json +10 -12
  10. package/plugins/composer/installed.php +9 -9
  11. package/plugins/lib/io.appthreat.atom-1.8.2-classpath.jar +0 -0
  12. package/plugins/lib/{io.appthreat.atom-1.8.1.jar → io.appthreat.atom-1.8.2.jar} +0 -0
  13. package/plugins/lib/{io.appthreat.c2cpg_3-1.1.3.jar → io.appthreat.c2cpg_3-1.1.4.jar} +0 -0
  14. package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.1.3.jar → io.appthreat.dataflowengineoss_3-1.1.4.jar} +0 -0
  15. package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.1.3.jar → io.appthreat.javasrc2cpg_3-1.1.4.jar} +0 -0
  16. package/plugins/lib/{io.appthreat.jimple2cpg_3-1.1.3.jar → io.appthreat.jimple2cpg_3-1.1.4.jar} +0 -0
  17. package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.1.3.jar → io.appthreat.jssrc2cpg_3-1.1.4.jar} +0 -0
  18. package/plugins/lib/{io.appthreat.php2atom_3-1.1.3.jar → io.appthreat.php2atom_3-1.1.4.jar} +0 -0
  19. package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.1.3.jar → io.appthreat.pysrc2cpg_3-1.1.4.jar} +0 -0
  20. package/plugins/lib/{io.appthreat.semanticcpg_3-1.1.3.jar → io.appthreat.semanticcpg_3-1.1.4.jar} +0 -0
  21. package/plugins/lib/{io.appthreat.x2cpg_3-1.1.3.jar → io.appthreat.x2cpg_3-1.1.4.jar} +0 -0
  22. package/plugins/nikic/php-parser/README.md +12 -20
  23. package/plugins/nikic/php-parser/bin/php-parse +10 -11
  24. package/plugins/nikic/php-parser/composer.json +4 -6
  25. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +15 -17
  26. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +30 -35
  27. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +4 -11
  28. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +7 -9
  29. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +27 -26
  30. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +7 -7
  31. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +7 -7
  32. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +10 -11
  33. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +15 -16
  34. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
  35. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +35 -16
  36. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +19 -19
  37. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +5 -6
  38. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +28 -25
  39. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +11 -16
  40. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
  41. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +3 -2
  42. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +69 -45
  43. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +19 -17
  44. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +2 -1
  45. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +67 -35
  46. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
  47. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +10 -15
  48. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +33 -24
  49. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +9 -6
  50. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +3 -2
  51. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +3 -2
  52. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +7 -11
  53. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +22 -36
  54. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +13 -20
  55. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +70 -55
  56. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +10 -15
  57. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +93 -68
  58. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +18 -11
  59. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +47 -0
  60. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +15 -10
  61. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +11 -12
  62. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +76 -0
  63. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +23 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +25 -19
  65. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +10 -6
  66. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +29 -22
  67. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +105 -0
  68. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +3 -3
  69. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +15 -10
  70. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +5 -6
  71. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +5 -10
  72. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +513 -69
  73. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +24 -23
  74. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +15 -13
  75. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +10 -9
  76. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +7 -5
  77. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +2 -1
  78. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +10 -9
  79. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +11 -10
  80. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +39 -1
  81. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
  82. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +28 -33
  83. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +10 -9
  84. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +3 -2
  85. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +3 -2
  86. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +3 -2
  87. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +3 -2
  88. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +3 -2
  89. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +3 -2
  90. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +3 -2
  91. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +3 -2
  92. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +3 -2
  93. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +3 -2
  94. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +3 -2
  95. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +3 -2
  96. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +3 -2
  97. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +8 -7
  98. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +10 -9
  99. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +5 -4
  100. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +5 -4
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +5 -4
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +5 -4
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +5 -4
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +5 -4
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +5 -4
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +5 -4
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +5 -4
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +5 -4
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +5 -4
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +5 -4
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +5 -4
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +5 -4
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +5 -4
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +5 -4
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +5 -4
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +5 -4
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +5 -4
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +5 -4
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +5 -4
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +5 -4
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +5 -4
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +5 -4
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +5 -4
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +5 -4
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +5 -4
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +11 -8
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +8 -7
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +8 -7
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +7 -3
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +3 -2
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +3 -2
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +6 -5
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +3 -2
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +3 -2
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +3 -2
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +3 -2
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +6 -5
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +10 -10
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +8 -7
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +26 -33
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +32 -1
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +8 -7
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +8 -7
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +6 -5
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +8 -7
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +8 -7
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +11 -10
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +11 -10
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +14 -13
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +8 -7
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +8 -12
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +7 -8
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +12 -12
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +11 -10
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +12 -12
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +8 -7
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +8 -7
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +7 -6
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +8 -7
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +8 -7
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +13 -12
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +13 -12
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +7 -6
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +8 -7
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +8 -7
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +7 -6
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +8 -7
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +11 -10
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +2 -1
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +8 -5
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +13 -13
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +9 -6
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +9 -8
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +9 -8
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +9 -8
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +56 -71
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +10 -11
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +22 -46
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +75 -1
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +29 -1
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +28 -1
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +78 -1
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +5 -4
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +5 -4
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +5 -4
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +5 -4
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +5 -4
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +5 -4
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +5 -4
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +5 -4
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +5 -4
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +26 -30
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +2 -1
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +9 -8
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +11 -10
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +12 -11
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +32 -24
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +13 -13
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +54 -47
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +89 -46
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +8 -7
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +9 -8
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +32 -1
  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 +10 -9
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +8 -7
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +10 -9
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +8 -7
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +12 -11
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +13 -17
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +8 -7
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +8 -7
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +15 -19
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +17 -20
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +24 -28
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +8 -7
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +8 -7
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +14 -16
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +8 -7
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +15 -18
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +8 -7
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +10 -13
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +8 -7
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +12 -11
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +5 -4
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +37 -28
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +32 -1
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +9 -8
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +35 -1
  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 +10 -9
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +30 -0
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +9 -8
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +13 -12
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +10 -9
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +4 -3
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +8 -10
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +12 -11
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +8 -7
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +50 -1
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +10 -9
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +2 -1
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +8 -7
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +3 -2
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +2 -2
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +29 -24
  253. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +20 -20
  254. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +84 -168
  255. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +19 -28
  256. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +84 -71
  257. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +7 -4
  258. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +2 -1
  259. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +5 -4
  260. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +7 -6
  261. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +28 -30
  262. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +3 -2
  263. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +11 -8
  264. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +7 -59
  265. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +2 -1
  266. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +55 -0
  267. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php5.php +2682 -0
  268. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +1522 -1323
  269. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +148 -0
  270. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +3 -9
  271. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +252 -433
  272. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +49 -15
  273. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +335 -386
  274. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +438 -517
  275. package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
  276. package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +0 -31
  277. package/plugins/nikic/php-parser/Makefile +0 -10
  278. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +0 -237
  279. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +0 -69
  280. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +0 -43
  281. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +0 -36
  282. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +0 -37
  283. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +0 -32
  284. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +0 -37
  285. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +0 -78
  286. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +0 -82
  287. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +0 -34
  288. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +0 -39
  289. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +0 -29
  290. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +0 -55
  291. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +0 -82
  292. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +0 -2717
  293. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +0 -164
  294. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +0 -51
  295. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +0 -18
  296. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +0 -56
  297. package/plugins/nikic/php-parser/phpstan-baseline.neon +0 -236
  298. package/plugins/nikic/php-parser/phpstan.neon.dist +0 -8
@@ -3,24 +3,24 @@ PHP Parser
3
3
 
4
4
  [![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
5
5
 
6
- This is a PHP parser written in PHP. Its purpose is to simplify static code analysis and
6
+ This is a PHP 5.2 to PHP 8.2 parser written in PHP. Its purpose is to simplify static code analysis and
7
7
  manipulation.
8
8
 
9
- [**Documentation for version 5.x**][doc_master] (current; for running on PHP >= 7.4; for parsing PHP 7.0 to PHP 8.3, with limited support for parsing PHP 5.x).
9
+ [**Documentation for version 4.x**][doc_4_x] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.2).
10
10
 
11
- [Documentation for version 4.x][doc_4_x] (supported; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.3).
11
+ [Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
12
12
 
13
13
  Features
14
14
  --------
15
15
 
16
16
  The main features provided by this library are:
17
17
 
18
- * Parsing PHP 7, and PHP 8 code into an abstract syntax tree (AST).
18
+ * Parsing PHP 5, PHP 7, and PHP 8 code into an abstract syntax tree (AST).
19
19
  * Invalid code can be parsed into a partial AST.
20
20
  * The AST contains accurate location information.
21
21
  * Dumping the AST in human-readable form.
22
22
  * Converting an AST back to PHP code.
23
- * Formatting can be preserved for partially changed ASTs.
23
+ * Experimental: Formatting can be preserved for partially changed ASTs.
24
24
  * Infrastructure to traverse and modify ASTs.
25
25
  * Resolution of namespaced names.
26
26
  * Evaluation of constant expressions.
@@ -51,7 +51,7 @@ function test($foo)
51
51
  }
52
52
  CODE;
53
53
 
54
- $parser = (new ParserFactory())->createForNewestSupportedVersion();
54
+ $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
55
55
  try {
56
56
  $ast = $parser->parse($code);
57
57
  } catch (Error $error) {
@@ -68,17 +68,12 @@ This dumps an AST looking something like this:
68
68
  ```
69
69
  array(
70
70
  0: Stmt_Function(
71
- attrGroups: array(
72
- )
73
71
  byRef: false
74
72
  name: Identifier(
75
73
  name: test
76
74
  )
77
75
  params: array(
78
76
  0: Param(
79
- attrGroups: array(
80
- )
81
- flags: 0
82
77
  type: null
83
78
  byRef: false
84
79
  variadic: false
@@ -93,11 +88,12 @@ array(
93
88
  0: Stmt_Expression(
94
89
  expr: Expr_FuncCall(
95
90
  name: Name(
96
- name: var_dump
91
+ parts: array(
92
+ 0: var_dump
93
+ )
97
94
  )
98
95
  args: array(
99
96
  0: Arg(
100
- name: null
101
97
  value: Expr_Variable(
102
98
  name: foo
103
99
  )
@@ -139,16 +135,12 @@ This gives us an AST where the `Function_::$stmts` are empty:
139
135
  ```
140
136
  array(
141
137
  0: Stmt_Function(
142
- attrGroups: array(
143
- )
144
138
  byRef: false
145
139
  name: Identifier(
146
140
  name: test
147
141
  )
148
142
  params: array(
149
143
  0: Param(
150
- attrGroups: array(
151
- )
152
144
  type: null
153
145
  byRef: false
154
146
  variadic: false
@@ -211,8 +203,9 @@ Component documentation:
211
203
  * [AST builders](doc/component/AST_builders.markdown)
212
204
  * Fluent builders for AST nodes
213
205
  * [Lexer](doc/component/Lexer.markdown)
214
- * Emulation
215
- * Tokens, positions and attributes
206
+ * Lexer options
207
+ * Token and file positions for nodes
208
+ * Custom attributes
216
209
  * [Error handling](doc/component/Error_handling.markdown)
217
210
  * Column information for errors
218
211
  * Error recovery (parsing of syntactically incorrect code)
@@ -230,4 +223,3 @@ Component documentation:
230
223
 
231
224
  [doc_3_x]: https://github.com/nikic/PHP-Parser/tree/3.x/doc
232
225
  [doc_4_x]: https://github.com/nikic/PHP-Parser/tree/4.x/doc
233
- [doc_master]: https://github.com/nikic/PHP-Parser/tree/master/doc
@@ -26,7 +26,13 @@ if (empty($files)) {
26
26
  showHelp("Must specify at least one file.");
27
27
  }
28
28
 
29
- $parser = (new PhpParser\ParserFactory())->createForVersion($attributes['version']);
29
+ $lexer = new PhpParser\Lexer\Emulative(['usedAttributes' => [
30
+ 'startLine', 'endLine', 'startFilePos', 'endFilePos', 'comments'
31
+ ]]);
32
+ $parser = (new PhpParser\ParserFactory)->create(
33
+ PhpParser\ParserFactory::PREFER_PHP7,
34
+ $lexer
35
+ );
30
36
  $dumper = new PhpParser\NodeDumper([
31
37
  'dumpComments' => true,
32
38
  'dumpPositions' => $attributes['with-positions'],
@@ -37,10 +43,7 @@ $traverser = new PhpParser\NodeTraverser();
37
43
  $traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
38
44
 
39
45
  foreach ($files as $file) {
40
- if ($file === '-') {
41
- $code = file_get_contents('php://stdin');
42
- fwrite(STDERR, "====> Stdin:\n");
43
- } else if (strpos($file, '<?php') === 0) {
46
+ if (strpos($file, '<?php') === 0) {
44
47
  $code = $file;
45
48
  fwrite(STDERR, "====> Code $code\n");
46
49
  } else {
@@ -105,7 +108,7 @@ function showHelp($error = '') {
105
108
  if ($error) {
106
109
  fwrite(STDERR, $error . "\n\n");
107
110
  }
108
- fwrite($error ? STDERR : STDOUT, <<<'OUTPUT'
111
+ fwrite($error ? STDERR : STDOUT, <<<OUTPUT
109
112
  Usage: php-parse [operations] file1.php [file2.php ...]
110
113
  or: php-parse [operations] "<?php code"
111
114
  Turn PHP source code into an abstract syntax tree.
@@ -120,7 +123,6 @@ Operations is a list of the following options (--dump by default):
120
123
  -c, --with-column-info Show column-numbers for errors (if available)
121
124
  -P, --with-positions Show positions in node dumps
122
125
  -r, --with-recovery Use parsing with error recovery
123
- --version=VERSION Target specific PHP version (default: newest)
124
126
  -h, --help Display this page
125
127
 
126
128
  Example:
@@ -141,7 +143,6 @@ function parseArgs($args) {
141
143
  'with-column-info' => false,
142
144
  'with-positions' => false,
143
145
  'with-recovery' => false,
144
- 'version' => PhpParser\PhpVersion::getNewestSupported(),
145
146
  ];
146
147
 
147
148
  array_shift($args);
@@ -192,9 +193,7 @@ function parseArgs($args) {
192
193
  $parseOptions = false;
193
194
  break;
194
195
  default:
195
- if (preg_match('/^--version=(.*)$/', $arg, $matches)) {
196
- $attributes['version'] = PhpParser\PhpVersion::fromString($matches[1]);
197
- } elseif ($arg[0] === '-' && \strlen($arg[0]) > 1) {
196
+ if ($arg[0] === '-') {
198
197
  showHelp("Invalid operation $arg.");
199
198
  } else {
200
199
  $files[] = $arg;
@@ -13,18 +13,16 @@
13
13
  }
14
14
  ],
15
15
  "require": {
16
- "php": ">=7.4",
17
- "ext-tokenizer": "*",
18
- "ext-json": "*",
19
- "ext-ctype": "*"
16
+ "php": ">=7.0",
17
+ "ext-tokenizer": "*"
20
18
  },
21
19
  "require-dev": {
22
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
20
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0",
23
21
  "ircmaxell/php-yacc": "^0.0.7"
24
22
  },
25
23
  "extra": {
26
24
  "branch-alias": {
27
- "dev-master": "5.0-dev"
25
+ "dev-master": "4.9-dev"
28
26
  }
29
27
  },
30
28
  "autoload": {
@@ -6,28 +6,26 @@ namespace PhpParser\Builder;
6
6
 
7
7
  use PhpParser;
8
8
  use PhpParser\BuilderHelpers;
9
- use PhpParser\Modifiers;
10
9
  use PhpParser\Node;
11
10
  use PhpParser\Node\Const_;
12
11
  use PhpParser\Node\Identifier;
13
12
  use PhpParser\Node\Stmt;
14
13
 
15
- class ClassConst implements PhpParser\Builder {
16
- protected int $flags = 0;
17
- /** @var array<string, mixed> */
18
- protected array $attributes = [];
19
- /** @var list<Const_> */
20
- protected array $constants = [];
14
+ class ClassConst implements PhpParser\Builder
15
+ {
16
+ protected $flags = 0;
17
+ protected $attributes = [];
18
+ protected $constants = [];
21
19
 
22
- /** @var list<Node\AttributeGroup> */
23
- protected array $attributeGroups = [];
24
- /** @var Identifier|Node\Name|Node\ComplexType|null */
25
- protected ?Node $type = null;
20
+ /** @var Node\AttributeGroup[] */
21
+ protected $attributeGroups = [];
22
+ /** @var Identifier|Node\Name|Node\ComplexType */
23
+ protected $type;
26
24
 
27
25
  /**
28
26
  * Creates a class constant builder
29
27
  *
30
- * @param string|Identifier $name Name
28
+ * @param string|Identifier $name Name
31
29
  * @param Node\Expr|bool|null|int|float|string|array $value Value
32
30
  */
33
31
  public function __construct($name, $value) {
@@ -37,7 +35,7 @@ class ClassConst implements PhpParser\Builder {
37
35
  /**
38
36
  * Add another constant to const group
39
37
  *
40
- * @param string|Identifier $name Name
38
+ * @param string|Identifier $name Name
41
39
  * @param Node\Expr|bool|null|int|float|string|array $value Value
42
40
  *
43
41
  * @return $this The builder instance (for fluid interface)
@@ -54,7 +52,7 @@ class ClassConst implements PhpParser\Builder {
54
52
  * @return $this The builder instance (for fluid interface)
55
53
  */
56
54
  public function makePublic() {
57
- $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
55
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
58
56
 
59
57
  return $this;
60
58
  }
@@ -65,7 +63,7 @@ class ClassConst implements PhpParser\Builder {
65
63
  * @return $this The builder instance (for fluid interface)
66
64
  */
67
65
  public function makeProtected() {
68
- $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
66
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
69
67
 
70
68
  return $this;
71
69
  }
@@ -76,7 +74,7 @@ class ClassConst implements PhpParser\Builder {
76
74
  * @return $this The builder instance (for fluid interface)
77
75
  */
78
76
  public function makePrivate() {
79
- $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
77
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
80
78
 
81
79
  return $this;
82
80
  }
@@ -87,7 +85,7 @@ class ClassConst implements PhpParser\Builder {
87
85
  * @return $this The builder instance (for fluid interface)
88
86
  */
89
87
  public function makeFinal() {
90
- $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL);
88
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
91
89
 
92
90
  return $this;
93
91
  }
@@ -4,27 +4,25 @@ namespace PhpParser\Builder;
4
4
 
5
5
  use PhpParser;
6
6
  use PhpParser\BuilderHelpers;
7
- use PhpParser\Modifiers;
8
7
  use PhpParser\Node;
9
8
  use PhpParser\Node\Name;
10
9
  use PhpParser\Node\Stmt;
11
10
 
12
- class Class_ extends Declaration {
13
- protected string $name;
14
- protected ?Name $extends = null;
15
- /** @var list<Name> */
16
- protected array $implements = [];
17
- protected int $flags = 0;
18
- /** @var list<Stmt\TraitUse> */
19
- protected array $uses = [];
20
- /** @var list<Stmt\ClassConst> */
21
- protected array $constants = [];
22
- /** @var list<Stmt\Property> */
23
- protected array $properties = [];
24
- /** @var list<Stmt\ClassMethod> */
25
- protected array $methods = [];
26
- /** @var list<Node\AttributeGroup> */
27
- protected array $attributeGroups = [];
11
+ class Class_ extends Declaration
12
+ {
13
+ protected $name;
14
+
15
+ protected $extends = null;
16
+ protected $implements = [];
17
+ protected $flags = 0;
18
+
19
+ protected $uses = [];
20
+ protected $constants = [];
21
+ protected $properties = [];
22
+ protected $methods = [];
23
+
24
+ /** @var Node\AttributeGroup[] */
25
+ protected $attributeGroups = [];
28
26
 
29
27
  /**
30
28
  * Creates a class builder.
@@ -69,7 +67,7 @@ class Class_ extends Declaration {
69
67
  * @return $this The builder instance (for fluid interface)
70
68
  */
71
69
  public function makeAbstract() {
72
- $this->flags = BuilderHelpers::addClassModifier($this->flags, Modifiers::ABSTRACT);
70
+ $this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
73
71
 
74
72
  return $this;
75
73
  }
@@ -80,18 +78,13 @@ class Class_ extends Declaration {
80
78
  * @return $this The builder instance (for fluid interface)
81
79
  */
82
80
  public function makeFinal() {
83
- $this->flags = BuilderHelpers::addClassModifier($this->flags, Modifiers::FINAL);
81
+ $this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
84
82
 
85
83
  return $this;
86
84
  }
87
85
 
88
- /**
89
- * Makes the class readonly.
90
- *
91
- * @return $this The builder instance (for fluid interface)
92
- */
93
86
  public function makeReadonly() {
94
- $this->flags = BuilderHelpers::addClassModifier($this->flags, Modifiers::READONLY);
87
+ $this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_READONLY);
95
88
 
96
89
  return $this;
97
90
  }
@@ -106,18 +99,20 @@ class Class_ extends Declaration {
106
99
  public function addStmt($stmt) {
107
100
  $stmt = BuilderHelpers::normalizeNode($stmt);
108
101
 
109
- if ($stmt instanceof Stmt\Property) {
110
- $this->properties[] = $stmt;
111
- } elseif ($stmt instanceof Stmt\ClassMethod) {
112
- $this->methods[] = $stmt;
113
- } elseif ($stmt instanceof Stmt\TraitUse) {
114
- $this->uses[] = $stmt;
115
- } elseif ($stmt instanceof Stmt\ClassConst) {
116
- $this->constants[] = $stmt;
117
- } else {
102
+ $targets = [
103
+ Stmt\TraitUse::class => &$this->uses,
104
+ Stmt\ClassConst::class => &$this->constants,
105
+ Stmt\Property::class => &$this->properties,
106
+ Stmt\ClassMethod::class => &$this->methods,
107
+ ];
108
+
109
+ $class = \get_class($stmt);
110
+ if (!isset($targets[$class])) {
118
111
  throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
119
112
  }
120
113
 
114
+ $targets[$class][] = $stmt;
115
+
121
116
  return $this;
122
117
  }
123
118
 
@@ -139,7 +134,7 @@ class Class_ extends Declaration {
139
134
  *
140
135
  * @return Stmt\Class_ The built class node
141
136
  */
142
- public function getNode(): PhpParser\Node {
137
+ public function getNode() : PhpParser\Node {
143
138
  return new Stmt\Class_($this->name, [
144
139
  'flags' => $this->flags,
145
140
  'extends' => $this->extends,
@@ -5,23 +5,16 @@ namespace PhpParser\Builder;
5
5
  use PhpParser;
6
6
  use PhpParser\BuilderHelpers;
7
7
 
8
- abstract class Declaration implements PhpParser\Builder {
9
- /** @var array<string, mixed> */
10
- protected array $attributes = [];
8
+ abstract class Declaration implements PhpParser\Builder
9
+ {
10
+ protected $attributes = [];
11
11
 
12
- /**
13
- * Adds a statement.
14
- *
15
- * @param PhpParser\Node\Stmt|PhpParser\Builder $stmt The statement to add
16
- *
17
- * @return $this The builder instance (for fluid interface)
18
- */
19
12
  abstract public function addStmt($stmt);
20
13
 
21
14
  /**
22
15
  * Adds multiple statements.
23
16
  *
24
- * @param (PhpParser\Node\Stmt|PhpParser\Builder)[] $stmts The statements to add
17
+ * @param array $stmts The statements to add
25
18
  *
26
19
  * @return $this The builder instance (for fluid interface)
27
20
  */
@@ -10,21 +10,19 @@ use PhpParser\Node;
10
10
  use PhpParser\Node\Identifier;
11
11
  use PhpParser\Node\Stmt;
12
12
 
13
- class EnumCase implements PhpParser\Builder {
14
- /** @var Identifier|string */
13
+ class EnumCase implements PhpParser\Builder
14
+ {
15
15
  protected $name;
16
- /** @var ?Node\Expr */
17
- protected ?Node\Expr $value = null;
18
- /** @var array<string, mixed> */
19
- protected array $attributes = [];
16
+ protected $value = null;
17
+ protected $attributes = [];
20
18
 
21
- /** @var list<Node\AttributeGroup> */
22
- protected array $attributeGroups = [];
19
+ /** @var Node\AttributeGroup[] */
20
+ protected $attributeGroups = [];
23
21
 
24
22
  /**
25
23
  * Creates an enum case builder.
26
24
  *
27
- * @param string|Identifier $name Name
25
+ * @param string|Identifier $name Name
28
26
  */
29
27
  public function __construct($name) {
30
28
  $this->name = $name;
@@ -9,21 +9,20 @@ use PhpParser\Node\Identifier;
9
9
  use PhpParser\Node\Name;
10
10
  use PhpParser\Node\Stmt;
11
11
 
12
- class Enum_ extends Declaration {
13
- protected string $name;
14
- protected ?Identifier $scalarType = null;
15
- /** @var list<Name> */
16
- protected array $implements = [];
17
- /** @var list<Stmt\TraitUse> */
18
- protected array $uses = [];
19
- /** @var list<Stmt\EnumCase> */
20
- protected array $enumCases = [];
21
- /** @var list<Stmt\ClassConst> */
22
- protected array $constants = [];
23
- /** @var list<Stmt\ClassMethod> */
24
- protected array $methods = [];
25
- /** @var list<Node\AttributeGroup> */
26
- protected array $attributeGroups = [];
12
+ class Enum_ extends Declaration
13
+ {
14
+ protected $name;
15
+ protected $scalarType = null;
16
+
17
+ protected $implements = [];
18
+
19
+ protected $uses = [];
20
+ protected $enumCases = [];
21
+ protected $constants = [];
22
+ protected $methods = [];
23
+
24
+ /** @var Node\AttributeGroup[] */
25
+ protected $attributeGroups = [];
27
26
 
28
27
  /**
29
28
  * Creates an enum builder.
@@ -37,7 +36,7 @@ class Enum_ extends Declaration {
37
36
  /**
38
37
  * Sets the scalar type.
39
38
  *
40
- * @param string|Identifier $scalarType
39
+ * @param string|Identifier $type
41
40
  *
42
41
  * @return $this
43
42
  */
@@ -72,18 +71,20 @@ class Enum_ extends Declaration {
72
71
  public function addStmt($stmt) {
73
72
  $stmt = BuilderHelpers::normalizeNode($stmt);
74
73
 
75
- if ($stmt instanceof Stmt\EnumCase) {
76
- $this->enumCases[] = $stmt;
77
- } elseif ($stmt instanceof Stmt\ClassMethod) {
78
- $this->methods[] = $stmt;
79
- } elseif ($stmt instanceof Stmt\TraitUse) {
80
- $this->uses[] = $stmt;
81
- } elseif ($stmt instanceof Stmt\ClassConst) {
82
- $this->constants[] = $stmt;
83
- } else {
74
+ $targets = [
75
+ Stmt\TraitUse::class => &$this->uses,
76
+ Stmt\EnumCase::class => &$this->enumCases,
77
+ Stmt\ClassConst::class => &$this->constants,
78
+ Stmt\ClassMethod::class => &$this->methods,
79
+ ];
80
+
81
+ $class = \get_class($stmt);
82
+ if (!isset($targets[$class])) {
84
83
  throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
85
84
  }
86
85
 
86
+ $targets[$class][] = $stmt;
87
+
87
88
  return $this;
88
89
  }
89
90
 
@@ -105,7 +106,7 @@ class Enum_ extends Declaration {
105
106
  *
106
107
  * @return Stmt\Enum_ The built enum node
107
108
  */
108
- public function getNode(): PhpParser\Node {
109
+ public function getNode() : PhpParser\Node {
109
110
  return new Stmt\Enum_($this->name, [
110
111
  'scalarType' => $this->scalarType,
111
112
  'implements' => $this->implements,
@@ -5,13 +5,13 @@ namespace PhpParser\Builder;
5
5
  use PhpParser\BuilderHelpers;
6
6
  use PhpParser\Node;
7
7
 
8
- abstract class FunctionLike extends Declaration {
9
- protected bool $returnByRef = false;
10
- /** @var Node\Param[] */
11
- protected array $params = [];
8
+ abstract class FunctionLike extends Declaration
9
+ {
10
+ protected $returnByRef = false;
11
+ protected $params = [];
12
12
 
13
- /** @var Node\Identifier|Node\Name|Node\ComplexType|null */
14
- protected ?Node $returnType = null;
13
+ /** @var string|Node\Name|Node\NullableType|null */
14
+ protected $returnType = null;
15
15
 
16
16
  /**
17
17
  * Make the function return by reference.
@@ -46,7 +46,7 @@ abstract class FunctionLike extends Declaration {
46
46
  /**
47
47
  * Adds multiple parameters.
48
48
  *
49
- * @param (Node\Param|Param)[] $params The parameters to add
49
+ * @param array $params The parameters to add
50
50
  *
51
51
  * @return $this The builder instance (for fluid interface)
52
52
  */
@@ -7,13 +7,13 @@ use PhpParser\BuilderHelpers;
7
7
  use PhpParser\Node;
8
8
  use PhpParser\Node\Stmt;
9
9
 
10
- class Function_ extends FunctionLike {
11
- protected string $name;
12
- /** @var list<Stmt> */
13
- protected array $stmts = [];
10
+ class Function_ extends FunctionLike
11
+ {
12
+ protected $name;
13
+ protected $stmts = [];
14
14
 
15
- /** @var list<Node\AttributeGroup> */
16
- protected array $attributeGroups = [];
15
+ /** @var Node\AttributeGroup[] */
16
+ protected $attributeGroups = [];
17
17
 
18
18
  /**
19
19
  * Creates a function builder.
@@ -55,7 +55,7 @@ class Function_ extends FunctionLike {
55
55
  *
56
56
  * @return Stmt\Function_ The built function node
57
57
  */
58
- public function getNode(): Node {
58
+ public function getNode() : Node {
59
59
  return new Stmt\Function_($this->name, [
60
60
  'byRef' => $this->returnByRef,
61
61
  'params' => $this->params,
@@ -8,16 +8,15 @@ use PhpParser\Node;
8
8
  use PhpParser\Node\Name;
9
9
  use PhpParser\Node\Stmt;
10
10
 
11
- class Interface_ extends Declaration {
12
- protected string $name;
13
- /** @var list<Name> */
14
- protected array $extends = [];
15
- /** @var list<Stmt\ClassConst> */
16
- protected array $constants = [];
17
- /** @var list<Stmt\ClassMethod> */
18
- protected array $methods = [];
19
- /** @var list<Node\AttributeGroup> */
20
- protected array $attributeGroups = [];
11
+ class Interface_ extends Declaration
12
+ {
13
+ protected $name;
14
+ protected $extends = [];
15
+ protected $constants = [];
16
+ protected $methods = [];
17
+
18
+ /** @var Node\AttributeGroup[] */
19
+ protected $attributeGroups = [];
21
20
 
22
21
  /**
23
22
  * Creates an interface builder.
@@ -84,7 +83,7 @@ class Interface_ extends Declaration {
84
83
  *
85
84
  * @return Stmt\Interface_ The built interface node
86
85
  */
87
- public function getNode(): PhpParser\Node {
86
+ public function getNode() : PhpParser\Node {
88
87
  return new Stmt\Interface_($this->name, [
89
88
  'extends' => $this->extends,
90
89
  'stmts' => array_merge($this->constants, $this->methods),