@appthreat/atom 1.8.0 → 1.8.1

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 (300) hide show
  1. package/astgen.js +6 -2
  2. package/index.js +3 -1
  3. package/package.json +3 -2
  4. package/phpastgen.js +31 -0
  5. package/plugins/autoload.php +25 -0
  6. package/plugins/bin/atom +1 -1
  7. package/plugins/bin/atom.bat +1 -1
  8. package/plugins/bin/php-parse +119 -0
  9. package/plugins/composer/ClassLoader.php +579 -0
  10. package/plugins/composer/InstalledVersions.php +359 -0
  11. package/plugins/composer/LICENSE +21 -0
  12. package/plugins/composer/autoload_classmap.php +260 -0
  13. package/plugins/composer/autoload_namespaces.php +9 -0
  14. package/plugins/composer/autoload_psr4.php +10 -0
  15. package/plugins/composer/autoload_real.php +36 -0
  16. package/plugins/composer/autoload_static.php +286 -0
  17. package/plugins/composer/installed.json +67 -0
  18. package/plugins/composer/installed.php +32 -0
  19. package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
  20. package/plugins/lib/{io.appthreat.atom-1.8.0.jar → io.appthreat.atom-1.8.1.jar} +0 -0
  21. package/plugins/lib/{io.appthreat.c2cpg_3-1.1.1.jar → io.appthreat.c2cpg_3-1.1.3.jar} +0 -0
  22. package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.1.1.jar → io.appthreat.dataflowengineoss_3-1.1.3.jar} +0 -0
  23. package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.1.1.jar → io.appthreat.javasrc2cpg_3-1.1.3.jar} +0 -0
  24. package/plugins/lib/{io.appthreat.jimple2cpg_3-1.1.1.jar → io.appthreat.jimple2cpg_3-1.1.3.jar} +0 -0
  25. package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.1.1.jar → io.appthreat.jssrc2cpg_3-1.1.3.jar} +0 -0
  26. package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
  27. package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.1.1.jar → io.appthreat.pysrc2cpg_3-1.1.3.jar} +0 -0
  28. package/plugins/lib/{io.appthreat.semanticcpg_3-1.1.1.jar → io.appthreat.semanticcpg_3-1.1.3.jar} +0 -0
  29. package/plugins/lib/{io.appthreat.x2cpg_3-1.1.1.jar → io.appthreat.x2cpg_3-1.1.3.jar} +0 -0
  30. package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +31 -0
  31. package/plugins/nikic/php-parser/LICENSE +29 -0
  32. package/plugins/nikic/php-parser/Makefile +10 -0
  33. package/plugins/nikic/php-parser/README.md +233 -0
  34. package/plugins/nikic/php-parser/bin/php-parse +206 -0
  35. package/plugins/nikic/php-parser/composer.json +43 -0
  36. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
  37. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
  38. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
  39. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
  40. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  41. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
  42. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
  43. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
  44. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
  45. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
  46. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +149 -0
  47. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +161 -0
  48. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
  49. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
  50. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
  51. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
  52. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
  53. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
  54. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +333 -0
  55. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
  56. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +207 -0
  57. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
  58. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +234 -0
  59. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +171 -0
  60. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
  61. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
  62. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
  63. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
  65. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
  66. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  67. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +271 -0
  68. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
  69. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +226 -0
  70. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
  71. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
  72. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  73. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +56 -0
  74. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
  75. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
  76. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  77. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  78. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
  79. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
  80. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
  81. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
  82. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
  83. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
  84. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  85. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
  86. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
  87. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  88. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  89. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
  90. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  91. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
  92. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +3 -0
  93. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
  94. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
  95. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
  96. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
  97. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
  98. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
  99. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
  100. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +11 -0
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +11 -0
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +11 -0
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +3 -0
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +75 -0
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +30 -0
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +269 -0
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +84 -0
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +3 -0
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +3 -0
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +3 -0
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +3 -0
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
  209. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
  210. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +29 -0
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +3 -0
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
  235. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
  236. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +82 -0
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +3 -0
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
  253. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +3 -0
  254. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
  255. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
  256. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
  257. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
  258. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
  259. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
  260. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
  261. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
  262. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
  263. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +3 -0
  264. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
  265. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
  266. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
  267. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
  268. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  269. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
  270. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  271. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +146 -0
  272. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +178 -0
  273. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +290 -0
  274. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
  275. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +278 -0
  276. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
  277. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
  278. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  279. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
  280. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
  281. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +262 -0
  282. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +51 -0
  283. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +38 -0
  284. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
  285. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
  286. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2699 -0
  287. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
  288. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
  289. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1241 -0
  290. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
  291. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
  292. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1177 -0
  293. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  294. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1655 -0
  295. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  296. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +56 -0
  297. package/plugins/nikic/php-parser/phpstan-baseline.neon +236 -0
  298. package/plugins/nikic/php-parser/phpstan.neon.dist +8 -0
  299. package/utils.mjs +10 -0
  300. package/plugins/lib/io.appthreat.atom-1.8.0-classpath.jar +0 -0
@@ -0,0 +1,147 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Modifiers;
8
+ use PhpParser\Node;
9
+ use PhpParser\Node\Stmt;
10
+
11
+ class Method extends FunctionLike {
12
+ protected string $name;
13
+
14
+ protected int $flags = 0;
15
+
16
+ /** @var list<Stmt>|null */
17
+ protected ?array $stmts = [];
18
+
19
+ /** @var list<Node\AttributeGroup> */
20
+ protected array $attributeGroups = [];
21
+
22
+ /**
23
+ * Creates a method builder.
24
+ *
25
+ * @param string $name Name of the method
26
+ */
27
+ public function __construct(string $name) {
28
+ $this->name = $name;
29
+ }
30
+
31
+ /**
32
+ * Makes the method public.
33
+ *
34
+ * @return $this The builder instance (for fluid interface)
35
+ */
36
+ public function makePublic() {
37
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
38
+
39
+ return $this;
40
+ }
41
+
42
+ /**
43
+ * Makes the method protected.
44
+ *
45
+ * @return $this The builder instance (for fluid interface)
46
+ */
47
+ public function makeProtected() {
48
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
49
+
50
+ return $this;
51
+ }
52
+
53
+ /**
54
+ * Makes the method private.
55
+ *
56
+ * @return $this The builder instance (for fluid interface)
57
+ */
58
+ public function makePrivate() {
59
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
60
+
61
+ return $this;
62
+ }
63
+
64
+ /**
65
+ * Makes the method static.
66
+ *
67
+ * @return $this The builder instance (for fluid interface)
68
+ */
69
+ public function makeStatic() {
70
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::STATIC);
71
+
72
+ return $this;
73
+ }
74
+
75
+ /**
76
+ * Makes the method abstract.
77
+ *
78
+ * @return $this The builder instance (for fluid interface)
79
+ */
80
+ public function makeAbstract() {
81
+ if (!empty($this->stmts)) {
82
+ throw new \LogicException('Cannot make method with statements abstract');
83
+ }
84
+
85
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::ABSTRACT);
86
+ $this->stmts = null; // abstract methods don't have statements
87
+
88
+ return $this;
89
+ }
90
+
91
+ /**
92
+ * Makes the method final.
93
+ *
94
+ * @return $this The builder instance (for fluid interface)
95
+ */
96
+ public function makeFinal() {
97
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::FINAL);
98
+
99
+ return $this;
100
+ }
101
+
102
+ /**
103
+ * Adds a statement.
104
+ *
105
+ * @param Node|PhpParser\Builder $stmt The statement to add
106
+ *
107
+ * @return $this The builder instance (for fluid interface)
108
+ */
109
+ public function addStmt($stmt) {
110
+ if (null === $this->stmts) {
111
+ throw new \LogicException('Cannot add statements to an abstract method');
112
+ }
113
+
114
+ $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
115
+
116
+ return $this;
117
+ }
118
+
119
+ /**
120
+ * Adds an attribute group.
121
+ *
122
+ * @param Node\Attribute|Node\AttributeGroup $attribute
123
+ *
124
+ * @return $this The builder instance (for fluid interface)
125
+ */
126
+ public function addAttribute($attribute) {
127
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
128
+
129
+ return $this;
130
+ }
131
+
132
+ /**
133
+ * Returns the built method node.
134
+ *
135
+ * @return Stmt\ClassMethod The built method node
136
+ */
137
+ public function getNode(): Node {
138
+ return new Stmt\ClassMethod($this->name, [
139
+ 'flags' => $this->flags,
140
+ 'byRef' => $this->returnByRef,
141
+ 'params' => $this->params,
142
+ 'returnType' => $this->returnType,
143
+ 'stmts' => $this->stmts,
144
+ 'attrGroups' => $this->attributeGroups,
145
+ ], $this->attributes);
146
+ }
147
+ }
@@ -0,0 +1,45 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Node;
8
+ use PhpParser\Node\Stmt;
9
+
10
+ class Namespace_ extends Declaration {
11
+ private ?Node\Name $name;
12
+ /** @var Stmt[] */
13
+ private array $stmts = [];
14
+
15
+ /**
16
+ * Creates a namespace builder.
17
+ *
18
+ * @param Node\Name|string|null $name Name of the namespace
19
+ */
20
+ public function __construct($name) {
21
+ $this->name = null !== $name ? BuilderHelpers::normalizeName($name) : null;
22
+ }
23
+
24
+ /**
25
+ * Adds a statement.
26
+ *
27
+ * @param Node|PhpParser\Builder $stmt The statement to add
28
+ *
29
+ * @return $this The builder instance (for fluid interface)
30
+ */
31
+ public function addStmt($stmt) {
32
+ $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
33
+
34
+ return $this;
35
+ }
36
+
37
+ /**
38
+ * Returns the built node.
39
+ *
40
+ * @return Stmt\Namespace_ The built node
41
+ */
42
+ public function getNode(): Node {
43
+ return new Stmt\Namespace_($this->name, $this->stmts, $this->attributes);
44
+ }
45
+ }
@@ -0,0 +1,149 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Modifiers;
8
+ use PhpParser\Node;
9
+
10
+ class Param implements PhpParser\Builder {
11
+ protected string $name;
12
+ protected ?Node\Expr $default = null;
13
+ /** @var Node\Identifier|Node\Name|Node\ComplexType|null */
14
+ protected ?Node $type = null;
15
+ protected bool $byRef = false;
16
+ protected int $flags = 0;
17
+ protected bool $variadic = false;
18
+ /** @var list<Node\AttributeGroup> */
19
+ protected array $attributeGroups = [];
20
+
21
+ /**
22
+ * Creates a parameter builder.
23
+ *
24
+ * @param string $name Name of the parameter
25
+ */
26
+ public function __construct(string $name) {
27
+ $this->name = $name;
28
+ }
29
+
30
+ /**
31
+ * Sets default value for the parameter.
32
+ *
33
+ * @param mixed $value Default value to use
34
+ *
35
+ * @return $this The builder instance (for fluid interface)
36
+ */
37
+ public function setDefault($value) {
38
+ $this->default = BuilderHelpers::normalizeValue($value);
39
+
40
+ return $this;
41
+ }
42
+
43
+ /**
44
+ * Sets type for the parameter.
45
+ *
46
+ * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
47
+ *
48
+ * @return $this The builder instance (for fluid interface)
49
+ */
50
+ public function setType($type) {
51
+ $this->type = BuilderHelpers::normalizeType($type);
52
+ if ($this->type == 'void') {
53
+ throw new \LogicException('Parameter type cannot be void');
54
+ }
55
+
56
+ return $this;
57
+ }
58
+
59
+ /**
60
+ * Make the parameter accept the value by reference.
61
+ *
62
+ * @return $this The builder instance (for fluid interface)
63
+ */
64
+ public function makeByRef() {
65
+ $this->byRef = true;
66
+
67
+ return $this;
68
+ }
69
+
70
+ /**
71
+ * Make the parameter variadic
72
+ *
73
+ * @return $this The builder instance (for fluid interface)
74
+ */
75
+ public function makeVariadic() {
76
+ $this->variadic = true;
77
+
78
+ return $this;
79
+ }
80
+
81
+ /**
82
+ * Makes the (promoted) parameter public.
83
+ *
84
+ * @return $this The builder instance (for fluid interface)
85
+ */
86
+ public function makePublic() {
87
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
88
+
89
+ return $this;
90
+ }
91
+
92
+ /**
93
+ * Makes the (promoted) parameter protected.
94
+ *
95
+ * @return $this The builder instance (for fluid interface)
96
+ */
97
+ public function makeProtected() {
98
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
99
+
100
+ return $this;
101
+ }
102
+
103
+ /**
104
+ * Makes the (promoted) parameter private.
105
+ *
106
+ * @return $this The builder instance (for fluid interface)
107
+ */
108
+ public function makePrivate() {
109
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
110
+
111
+ return $this;
112
+ }
113
+
114
+ /**
115
+ * Makes the (promoted) parameter readonly.
116
+ *
117
+ * @return $this The builder instance (for fluid interface)
118
+ */
119
+ public function makeReadonly() {
120
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY);
121
+
122
+ return $this;
123
+ }
124
+
125
+ /**
126
+ * Adds an attribute group.
127
+ *
128
+ * @param Node\Attribute|Node\AttributeGroup $attribute
129
+ *
130
+ * @return $this The builder instance (for fluid interface)
131
+ */
132
+ public function addAttribute($attribute) {
133
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
134
+
135
+ return $this;
136
+ }
137
+
138
+ /**
139
+ * Returns the built parameter node.
140
+ *
141
+ * @return Node\Param The built parameter node
142
+ */
143
+ public function getNode(): Node {
144
+ return new Node\Param(
145
+ new Node\Expr\Variable($this->name),
146
+ $this->default, $this->type, $this->byRef, $this->variadic, [], $this->flags, $this->attributeGroups
147
+ );
148
+ }
149
+ }
@@ -0,0 +1,161 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Modifiers;
8
+ use PhpParser\Node;
9
+ use PhpParser\Node\Identifier;
10
+ use PhpParser\Node\Name;
11
+ use PhpParser\Node\Stmt;
12
+ use PhpParser\Node\ComplexType;
13
+
14
+ class Property implements PhpParser\Builder {
15
+ protected string $name;
16
+
17
+ protected int $flags = 0;
18
+
19
+ protected ?Node\Expr $default = null;
20
+ /** @var array<string, mixed> */
21
+ protected array $attributes = [];
22
+ /** @var null|Identifier|Name|ComplexType */
23
+ protected ?Node $type = null;
24
+ /** @var list<Node\AttributeGroup> */
25
+ protected array $attributeGroups = [];
26
+
27
+ /**
28
+ * Creates a property builder.
29
+ *
30
+ * @param string $name Name of the property
31
+ */
32
+ public function __construct(string $name) {
33
+ $this->name = $name;
34
+ }
35
+
36
+ /**
37
+ * Makes the property public.
38
+ *
39
+ * @return $this The builder instance (for fluid interface)
40
+ */
41
+ public function makePublic() {
42
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PUBLIC);
43
+
44
+ return $this;
45
+ }
46
+
47
+ /**
48
+ * Makes the property protected.
49
+ *
50
+ * @return $this The builder instance (for fluid interface)
51
+ */
52
+ public function makeProtected() {
53
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PROTECTED);
54
+
55
+ return $this;
56
+ }
57
+
58
+ /**
59
+ * Makes the property private.
60
+ *
61
+ * @return $this The builder instance (for fluid interface)
62
+ */
63
+ public function makePrivate() {
64
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::PRIVATE);
65
+
66
+ return $this;
67
+ }
68
+
69
+ /**
70
+ * Makes the property static.
71
+ *
72
+ * @return $this The builder instance (for fluid interface)
73
+ */
74
+ public function makeStatic() {
75
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::STATIC);
76
+
77
+ return $this;
78
+ }
79
+
80
+ /**
81
+ * Makes the property readonly.
82
+ *
83
+ * @return $this The builder instance (for fluid interface)
84
+ */
85
+ public function makeReadonly() {
86
+ $this->flags = BuilderHelpers::addModifier($this->flags, Modifiers::READONLY);
87
+
88
+ return $this;
89
+ }
90
+
91
+ /**
92
+ * Sets default value for the property.
93
+ *
94
+ * @param mixed $value Default value to use
95
+ *
96
+ * @return $this The builder instance (for fluid interface)
97
+ */
98
+ public function setDefault($value) {
99
+ $this->default = BuilderHelpers::normalizeValue($value);
100
+
101
+ return $this;
102
+ }
103
+
104
+ /**
105
+ * Sets doc comment for the property.
106
+ *
107
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
108
+ *
109
+ * @return $this The builder instance (for fluid interface)
110
+ */
111
+ public function setDocComment($docComment) {
112
+ $this->attributes = [
113
+ 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
114
+ ];
115
+
116
+ return $this;
117
+ }
118
+
119
+ /**
120
+ * Sets the property type for PHP 7.4+.
121
+ *
122
+ * @param string|Name|Identifier|ComplexType $type
123
+ *
124
+ * @return $this
125
+ */
126
+ public function setType($type) {
127
+ $this->type = BuilderHelpers::normalizeType($type);
128
+
129
+ return $this;
130
+ }
131
+
132
+ /**
133
+ * Adds an attribute group.
134
+ *
135
+ * @param Node\Attribute|Node\AttributeGroup $attribute
136
+ *
137
+ * @return $this The builder instance (for fluid interface)
138
+ */
139
+ public function addAttribute($attribute) {
140
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
141
+
142
+ return $this;
143
+ }
144
+
145
+ /**
146
+ * Returns the built class node.
147
+ *
148
+ * @return Stmt\Property The built property node
149
+ */
150
+ public function getNode(): PhpParser\Node {
151
+ return new Stmt\Property(
152
+ $this->flags !== 0 ? $this->flags : Modifiers::PUBLIC,
153
+ [
154
+ new Node\PropertyItem($this->name, $this->default)
155
+ ],
156
+ $this->attributes,
157
+ $this->type,
158
+ $this->attributeGroups
159
+ );
160
+ }
161
+ }
@@ -0,0 +1,65 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser\Builder;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Node;
8
+ use PhpParser\Node\Stmt;
9
+
10
+ class TraitUse implements Builder {
11
+ /** @var Node\Name[] */
12
+ protected array $traits = [];
13
+ /** @var Stmt\TraitUseAdaptation[] */
14
+ protected array $adaptations = [];
15
+
16
+ /**
17
+ * Creates a trait use builder.
18
+ *
19
+ * @param Node\Name|string ...$traits Names of used traits
20
+ */
21
+ public function __construct(...$traits) {
22
+ foreach ($traits as $trait) {
23
+ $this->and($trait);
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Adds used trait.
29
+ *
30
+ * @param Node\Name|string $trait Trait name
31
+ *
32
+ * @return $this The builder instance (for fluid interface)
33
+ */
34
+ public function and($trait) {
35
+ $this->traits[] = BuilderHelpers::normalizeName($trait);
36
+ return $this;
37
+ }
38
+
39
+ /**
40
+ * Adds trait adaptation.
41
+ *
42
+ * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
43
+ *
44
+ * @return $this The builder instance (for fluid interface)
45
+ */
46
+ public function with($adaptation) {
47
+ $adaptation = BuilderHelpers::normalizeNode($adaptation);
48
+
49
+ if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
50
+ throw new \LogicException('Adaptation must have type TraitUseAdaptation');
51
+ }
52
+
53
+ $this->adaptations[] = $adaptation;
54
+ return $this;
55
+ }
56
+
57
+ /**
58
+ * Returns the built node.
59
+ *
60
+ * @return Node The built node
61
+ */
62
+ public function getNode(): Node {
63
+ return new Stmt\TraitUse($this->traits, $this->adaptations);
64
+ }
65
+ }
@@ -0,0 +1,145 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Builder;
4
+
5
+ use PhpParser\Builder;
6
+ use PhpParser\BuilderHelpers;
7
+ use PhpParser\Modifiers;
8
+ use PhpParser\Node;
9
+ use PhpParser\Node\Stmt;
10
+
11
+ class TraitUseAdaptation implements Builder {
12
+ private const TYPE_UNDEFINED = 0;
13
+ private const TYPE_ALIAS = 1;
14
+ private const TYPE_PRECEDENCE = 2;
15
+
16
+ protected int $type;
17
+ protected ?Node\Name $trait;
18
+ protected Node\Identifier $method;
19
+ protected ?int $modifier = null;
20
+ protected ?Node\Identifier $alias = null;
21
+ /** @var Node\Name[] */
22
+ protected array $insteadof = [];
23
+
24
+ /**
25
+ * Creates a trait use adaptation builder.
26
+ *
27
+ * @param Node\Name|string|null $trait Name of adapted trait
28
+ * @param Node\Identifier|string $method Name of adapted method
29
+ */
30
+ public function __construct($trait, $method) {
31
+ $this->type = self::TYPE_UNDEFINED;
32
+
33
+ $this->trait = is_null($trait) ? null : BuilderHelpers::normalizeName($trait);
34
+ $this->method = BuilderHelpers::normalizeIdentifier($method);
35
+ }
36
+
37
+ /**
38
+ * Sets alias of method.
39
+ *
40
+ * @param Node\Identifier|string $alias Alias for adapted method
41
+ *
42
+ * @return $this The builder instance (for fluid interface)
43
+ */
44
+ public function as($alias) {
45
+ if ($this->type === self::TYPE_UNDEFINED) {
46
+ $this->type = self::TYPE_ALIAS;
47
+ }
48
+
49
+ if ($this->type !== self::TYPE_ALIAS) {
50
+ throw new \LogicException('Cannot set alias for not alias adaptation buider');
51
+ }
52
+
53
+ $this->alias = BuilderHelpers::normalizeIdentifier($alias);
54
+ return $this;
55
+ }
56
+
57
+ /**
58
+ * Sets adapted method public.
59
+ *
60
+ * @return $this The builder instance (for fluid interface)
61
+ */
62
+ public function makePublic() {
63
+ $this->setModifier(Modifiers::PUBLIC);
64
+ return $this;
65
+ }
66
+
67
+ /**
68
+ * Sets adapted method protected.
69
+ *
70
+ * @return $this The builder instance (for fluid interface)
71
+ */
72
+ public function makeProtected() {
73
+ $this->setModifier(Modifiers::PROTECTED);
74
+ return $this;
75
+ }
76
+
77
+ /**
78
+ * Sets adapted method private.
79
+ *
80
+ * @return $this The builder instance (for fluid interface)
81
+ */
82
+ public function makePrivate() {
83
+ $this->setModifier(Modifiers::PRIVATE);
84
+ return $this;
85
+ }
86
+
87
+ /**
88
+ * Adds overwritten traits.
89
+ *
90
+ * @param Node\Name|string ...$traits Traits for overwrite
91
+ *
92
+ * @return $this The builder instance (for fluid interface)
93
+ */
94
+ public function insteadof(...$traits) {
95
+ if ($this->type === self::TYPE_UNDEFINED) {
96
+ if (is_null($this->trait)) {
97
+ throw new \LogicException('Precedence adaptation must have trait');
98
+ }
99
+
100
+ $this->type = self::TYPE_PRECEDENCE;
101
+ }
102
+
103
+ if ($this->type !== self::TYPE_PRECEDENCE) {
104
+ throw new \LogicException('Cannot add overwritten traits for not precedence adaptation buider');
105
+ }
106
+
107
+ foreach ($traits as $trait) {
108
+ $this->insteadof[] = BuilderHelpers::normalizeName($trait);
109
+ }
110
+
111
+ return $this;
112
+ }
113
+
114
+ protected function setModifier(int $modifier): void {
115
+ if ($this->type === self::TYPE_UNDEFINED) {
116
+ $this->type = self::TYPE_ALIAS;
117
+ }
118
+
119
+ if ($this->type !== self::TYPE_ALIAS) {
120
+ throw new \LogicException('Cannot set access modifier for not alias adaptation buider');
121
+ }
122
+
123
+ if (is_null($this->modifier)) {
124
+ $this->modifier = $modifier;
125
+ } else {
126
+ throw new \LogicException('Multiple access type modifiers are not allowed');
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Returns the built node.
132
+ *
133
+ * @return Node The built node
134
+ */
135
+ public function getNode(): Node {
136
+ switch ($this->type) {
137
+ case self::TYPE_ALIAS:
138
+ return new Stmt\TraitUseAdaptation\Alias($this->trait, $this->method, $this->modifier, $this->alias);
139
+ case self::TYPE_PRECEDENCE:
140
+ return new Stmt\TraitUseAdaptation\Precedence($this->trait, $this->method, $this->insteadof);
141
+ default:
142
+ throw new \LogicException('Type of adaptation is not defined');
143
+ }
144
+ }
145
+ }