@appthreat/atom 1.7.5 → 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 (326) 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/{com.fasterxml.jackson.core.jackson-annotations-2.15.2.jar → com.fasterxml.jackson.core.jackson-annotations-2.16.0.jar} +0 -0
  20. package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.16.0.jar +0 -0
  21. package/plugins/lib/{com.fasterxml.jackson.core.jackson-databind-2.15.2.jar → com.fasterxml.jackson.core.jackson-databind-2.16.0.jar} +0 -0
  22. package/plugins/lib/{com.github.javaparser.javaparser-core-3.25.6.jar → com.github.javaparser.javaparser-core-3.25.7.jar} +0 -0
  23. package/plugins/lib/{com.github.javaparser.javaparser-symbol-solver-core-3.25.6.jar → com.github.javaparser.javaparser-symbol-solver-core-3.25.7.jar} +0 -0
  24. package/plugins/lib/{com.typesafe.config-1.4.2.jar → com.typesafe.config-1.4.3.jar} +0 -0
  25. package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
  26. package/plugins/lib/{io.appthreat.atom-1.7.5.jar → io.appthreat.atom-1.8.1.jar} +0 -0
  27. package/plugins/lib/{io.appthreat.c2cpg_3-1.0.10.jar → io.appthreat.c2cpg_3-1.1.3.jar} +0 -0
  28. package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.0.10.jar → io.appthreat.dataflowengineoss_3-1.1.3.jar} +0 -0
  29. package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.0.10.jar → io.appthreat.javasrc2cpg_3-1.1.3.jar} +0 -0
  30. package/plugins/lib/{io.appthreat.jimple2cpg_3-1.0.10.jar → io.appthreat.jimple2cpg_3-1.1.3.jar} +0 -0
  31. package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.0.10.jar → io.appthreat.jssrc2cpg_3-1.1.3.jar} +0 -0
  32. package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
  33. package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.0.10.jar → io.appthreat.pysrc2cpg_3-1.1.3.jar} +0 -0
  34. package/plugins/lib/{io.appthreat.semanticcpg_3-1.0.10.jar → io.appthreat.semanticcpg_3-1.1.3.jar} +0 -0
  35. package/plugins/lib/{io.appthreat.x2cpg_3-1.0.10.jar → io.appthreat.x2cpg_3-1.1.3.jar} +0 -0
  36. package/plugins/lib/io.circe.circe-core_3-0.14.6.jar +0 -0
  37. package/plugins/lib/io.circe.circe-generic_3-0.14.6.jar +0 -0
  38. package/plugins/lib/io.circe.circe-jawn_3-0.14.6.jar +0 -0
  39. package/plugins/lib/io.circe.circe-numbers_3-0.14.6.jar +0 -0
  40. package/plugins/lib/io.circe.circe-parser_3-0.14.6.jar +0 -0
  41. package/plugins/lib/org.gradle.gradle-tooling-api-8.5.jar +0 -0
  42. package/plugins/lib/{org.json4s.json4s-ast_3-4.0.6.jar → org.json4s.json4s-ast_3-4.0.7.jar} +0 -0
  43. package/plugins/lib/{org.json4s.json4s-core_3-4.0.6.jar → org.json4s.json4s-core_3-4.0.7.jar} +0 -0
  44. package/plugins/lib/{org.json4s.json4s-native-core_3-4.0.6.jar → org.json4s.json4s-native-core_3-4.0.7.jar} +0 -0
  45. package/plugins/lib/{org.json4s.json4s-native_3-4.0.6.jar → org.json4s.json4s-native_3-4.0.7.jar} +0 -0
  46. package/plugins/lib/{org.json4s.json4s-scalap_3-4.0.6.jar → org.json4s.json4s-scalap_3-4.0.7.jar} +0 -0
  47. package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.3.0.jar +0 -0
  48. package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +31 -0
  49. package/plugins/nikic/php-parser/LICENSE +29 -0
  50. package/plugins/nikic/php-parser/Makefile +10 -0
  51. package/plugins/nikic/php-parser/README.md +233 -0
  52. package/plugins/nikic/php-parser/bin/php-parse +206 -0
  53. package/plugins/nikic/php-parser/composer.json +43 -0
  54. package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
  55. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
  56. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
  57. package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
  58. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  59. package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
  60. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
  61. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
  62. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
  63. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
  64. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +149 -0
  65. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +161 -0
  66. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
  67. package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
  68. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
  69. package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
  70. package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
  71. package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
  72. package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +333 -0
  73. package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
  74. package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +207 -0
  75. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
  76. package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +234 -0
  77. package/plugins/nikic/php-parser/lib/PhpParser/Error.php +171 -0
  78. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
  79. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
  80. package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
  81. package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
  82. package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
  83. package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
  84. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  85. package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +271 -0
  86. package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
  87. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +226 -0
  88. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
  89. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
  90. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  91. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +56 -0
  92. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
  93. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
  94. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  95. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  96. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
  97. package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
  98. package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
  99. package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
  100. package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
  101. package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
  102. package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  103. package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
  104. package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
  105. package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  106. package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  107. package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
  108. package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  109. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
  110. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +3 -0
  111. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
  112. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
  113. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
  114. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
  115. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
  116. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
  117. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
  118. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
  119. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
  120. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
  121. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
  122. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
  123. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
  124. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
  125. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
  126. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
  127. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
  128. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
  129. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
  130. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
  131. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
  132. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
  133. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
  134. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
  135. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
  136. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
  137. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
  138. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
  139. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
  140. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
  141. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
  142. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
  143. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
  144. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
  145. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
  146. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
  147. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
  148. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
  149. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
  150. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
  151. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
  152. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
  153. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
  154. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
  155. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
  156. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
  157. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
  158. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
  159. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
  160. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
  161. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +11 -0
  162. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
  163. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +11 -0
  164. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
  165. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +11 -0
  166. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
  167. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
  168. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
  169. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
  170. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
  171. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +3 -0
  172. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
  173. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
  174. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
  175. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
  176. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
  177. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
  178. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
  179. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
  180. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
  181. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
  182. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
  183. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
  184. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
  185. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
  186. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
  187. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
  188. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
  189. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
  190. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
  191. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
  192. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
  193. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
  194. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
  195. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
  196. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
  197. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
  198. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
  199. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
  200. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
  201. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
  202. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
  203. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
  204. package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
  205. package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
  206. package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +75 -0
  207. package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  208. package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  209. package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +30 -0
  210. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
  211. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
  212. package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +269 -0
  213. package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
  214. package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +84 -0
  215. package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  216. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +3 -0
  217. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +3 -0
  218. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +3 -0
  219. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  220. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  221. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  222. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +3 -0
  223. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
  224. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
  225. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
  226. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
  227. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
  228. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
  229. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
  230. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
  231. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
  232. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
  233. package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
  234. package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  235. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  236. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
  237. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
  238. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
  239. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
  240. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
  241. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
  242. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
  243. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +29 -0
  244. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
  245. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +3 -0
  246. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
  247. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
  248. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
  249. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
  250. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
  251. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
  252. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
  253. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
  254. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
  255. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
  256. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
  257. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
  258. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
  259. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
  260. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
  261. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
  262. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
  263. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
  264. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
  265. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
  266. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
  267. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
  268. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +82 -0
  269. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +3 -0
  270. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
  271. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +3 -0
  272. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
  273. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
  274. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
  275. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
  276. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
  277. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
  278. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
  279. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
  280. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
  281. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +3 -0
  282. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
  283. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
  284. package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
  285. package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
  286. package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  287. package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
  288. package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  289. package/plugins/nikic/php-parser/lib/PhpParser/Node.php +146 -0
  290. package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +178 -0
  291. package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +290 -0
  292. package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
  293. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +278 -0
  294. package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
  295. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
  296. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  297. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
  298. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
  299. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +262 -0
  300. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +51 -0
  301. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +38 -0
  302. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
  303. package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
  304. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2699 -0
  305. package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
  306. package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
  307. package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1241 -0
  308. package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
  309. package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
  310. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1177 -0
  311. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  312. package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1655 -0
  313. package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  314. package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +56 -0
  315. package/plugins/nikic/php-parser/phpstan-baseline.neon +236 -0
  316. package/plugins/nikic/php-parser/phpstan.neon.dist +8 -0
  317. package/utils.mjs +10 -0
  318. package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.15.2.jar +0 -0
  319. package/plugins/lib/io.appthreat.atom-1.7.5-classpath.jar +0 -0
  320. package/plugins/lib/io.circe.circe-core_3-0.14.5.jar +0 -0
  321. package/plugins/lib/io.circe.circe-generic_3-0.14.5.jar +0 -0
  322. package/plugins/lib/io.circe.circe-jawn_3-0.14.5.jar +0 -0
  323. package/plugins/lib/io.circe.circe-numbers_3-0.14.5.jar +0 -0
  324. package/plugins/lib/io.circe.circe-parser_3-0.14.5.jar +0 -0
  325. package/plugins/lib/org.gradle.gradle-tooling-api-8.3.jar +0 -0
  326. package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.2.0.jar +0 -0
@@ -0,0 +1,116 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser;
4
+
5
+ require __DIR__ . '/compatibility_tokens.php';
6
+
7
+ class Lexer {
8
+ /**
9
+ * Tokenize the provided source code.
10
+ *
11
+ * The token array is in the same format as provided by the PhpToken::tokenize() method in
12
+ * PHP 8.0. The tokens are instances of PhpParser\Token, to abstract over a polyfill
13
+ * implementation in earlier PHP version.
14
+ *
15
+ * The token array is terminated by a sentinel token with token ID 0.
16
+ * The token array does not discard any tokens (i.e. whitespace and comments are included).
17
+ * The token position attributes are against this token array.
18
+ *
19
+ * @param string $code The source code to tokenize.
20
+ * @param ErrorHandler|null $errorHandler Error handler to use for lexing errors. Defaults to
21
+ * ErrorHandler\Throwing.
22
+ * @return Token[] Tokens
23
+ */
24
+ public function tokenize(string $code, ?ErrorHandler $errorHandler = null): array {
25
+ if (null === $errorHandler) {
26
+ $errorHandler = new ErrorHandler\Throwing();
27
+ }
28
+
29
+ $scream = ini_set('xdebug.scream', '0');
30
+
31
+ $tokens = @Token::tokenize($code);
32
+ $this->postprocessTokens($tokens, $errorHandler);
33
+
34
+ if (false !== $scream) {
35
+ ini_set('xdebug.scream', $scream);
36
+ }
37
+
38
+ return $tokens;
39
+ }
40
+
41
+ private function handleInvalidCharacter(Token $token, ErrorHandler $errorHandler): void {
42
+ $chr = $token->text;
43
+ if ($chr === "\0") {
44
+ // PHP cuts error message after null byte, so need special case
45
+ $errorMsg = 'Unexpected null byte';
46
+ } else {
47
+ $errorMsg = sprintf(
48
+ 'Unexpected character "%s" (ASCII %d)', $chr, ord($chr)
49
+ );
50
+ }
51
+
52
+ $errorHandler->handleError(new Error($errorMsg, [
53
+ 'startLine' => $token->line,
54
+ 'endLine' => $token->line,
55
+ 'startFilePos' => $token->pos,
56
+ 'endFilePos' => $token->pos,
57
+ ]));
58
+ }
59
+
60
+ private function isUnterminatedComment(Token $token): bool {
61
+ return $token->is([\T_COMMENT, \T_DOC_COMMENT])
62
+ && substr($token->text, 0, 2) === '/*'
63
+ && substr($token->text, -2) !== '*/';
64
+ }
65
+
66
+ /**
67
+ * @param list<Token> $tokens
68
+ */
69
+ protected function postprocessTokens(array &$tokens, ErrorHandler $errorHandler): void {
70
+ // This function reports errors (bad characters and unterminated comments) in the token
71
+ // array, and performs certain canonicalizations:
72
+ // * Use PHP 8.1 T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG and
73
+ // T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG tokens used to disambiguate intersection types.
74
+ // * Add a sentinel token with ID 0.
75
+
76
+ $numTokens = \count($tokens);
77
+ if ($numTokens === 0) {
78
+ // Empty input edge case: Just add the sentinel token.
79
+ $tokens[] = new Token(0, "\0", 1, 0);
80
+ return;
81
+ }
82
+
83
+ for ($i = 0; $i < $numTokens; $i++) {
84
+ $token = $tokens[$i];
85
+ if ($token->id === \T_BAD_CHARACTER) {
86
+ $this->handleInvalidCharacter($token, $errorHandler);
87
+ }
88
+
89
+ if ($token->id === \ord('&')) {
90
+ $next = $i + 1;
91
+ while (isset($tokens[$next]) && $tokens[$next]->id === \T_WHITESPACE) {
92
+ $next++;
93
+ }
94
+ $followedByVarOrVarArg = isset($tokens[$next]) &&
95
+ $tokens[$next]->is([\T_VARIABLE, \T_ELLIPSIS]);
96
+ $token->id = $followedByVarOrVarArg
97
+ ? \T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
98
+ : \T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG;
99
+ }
100
+ }
101
+
102
+ // Check for unterminated comment
103
+ $lastToken = $tokens[$numTokens - 1];
104
+ if ($this->isUnterminatedComment($lastToken)) {
105
+ $errorHandler->handleError(new Error('Unterminated comment', [
106
+ 'startLine' => $lastToken->line,
107
+ 'endLine' => $lastToken->getEndLine(),
108
+ 'startFilePos' => $lastToken->pos,
109
+ 'endFilePos' => $lastToken->getEndPos(),
110
+ ]));
111
+ }
112
+
113
+ // Add sentinel token.
114
+ $tokens[] = new Token(0, "\0", $lastToken->getEndLine(), $lastToken->getEndPos());
115
+ }
116
+ }
@@ -0,0 +1,69 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser;
4
+
5
+ /**
6
+ * Modifiers used (as a bit mask) by various flags subnodes, for example on classes, functions,
7
+ * properties and constants.
8
+ */
9
+ final class Modifiers {
10
+ public const PUBLIC = 1;
11
+ public const PROTECTED = 2;
12
+ public const PRIVATE = 4;
13
+ public const STATIC = 8;
14
+ public const ABSTRACT = 16;
15
+ public const FINAL = 32;
16
+ public const READONLY = 64;
17
+
18
+ public const VISIBILITY_MASK = 1 | 2 | 4;
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+ public static function verifyClassModifier(int $a, int $b): void {
24
+ if ($a & Modifiers::ABSTRACT && $b & Modifiers::ABSTRACT) {
25
+ throw new Error('Multiple abstract modifiers are not allowed');
26
+ }
27
+
28
+ if ($a & Modifiers::FINAL && $b & Modifiers::FINAL) {
29
+ throw new Error('Multiple final modifiers are not allowed');
30
+ }
31
+
32
+ if ($a & Modifiers::READONLY && $b & Modifiers::READONLY) {
33
+ throw new Error('Multiple readonly modifiers are not allowed');
34
+ }
35
+
36
+ if ($a & 48 && $b & 48) {
37
+ throw new Error('Cannot use the final modifier on an abstract class');
38
+ }
39
+ }
40
+
41
+ /**
42
+ * @internal
43
+ */
44
+ public static function verifyModifier(int $a, int $b): void {
45
+ if ($a & Modifiers::VISIBILITY_MASK && $b & Modifiers::VISIBILITY_MASK) {
46
+ throw new Error('Multiple access type modifiers are not allowed');
47
+ }
48
+
49
+ if ($a & Modifiers::ABSTRACT && $b & Modifiers::ABSTRACT) {
50
+ throw new Error('Multiple abstract modifiers are not allowed');
51
+ }
52
+
53
+ if ($a & Modifiers::STATIC && $b & Modifiers::STATIC) {
54
+ throw new Error('Multiple static modifiers are not allowed');
55
+ }
56
+
57
+ if ($a & Modifiers::FINAL && $b & Modifiers::FINAL) {
58
+ throw new Error('Multiple final modifiers are not allowed');
59
+ }
60
+
61
+ if ($a & Modifiers::READONLY && $b & Modifiers::READONLY) {
62
+ throw new Error('Multiple readonly modifiers are not allowed');
63
+ }
64
+
65
+ if ($a & 48 && $b & 48) {
66
+ throw new Error('Cannot use the final modifier on an abstract class member');
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,284 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser;
4
+
5
+ use PhpParser\Node\Name;
6
+ use PhpParser\Node\Name\FullyQualified;
7
+ use PhpParser\Node\Stmt;
8
+
9
+ class NameContext {
10
+ /** @var null|Name Current namespace */
11
+ protected ?Name $namespace;
12
+
13
+ /** @var Name[][] Map of format [aliasType => [aliasName => originalName]] */
14
+ protected array $aliases = [];
15
+
16
+ /** @var Name[][] Same as $aliases but preserving original case */
17
+ protected array $origAliases = [];
18
+
19
+ /** @var ErrorHandler Error handler */
20
+ protected ErrorHandler $errorHandler;
21
+
22
+ /**
23
+ * Create a name context.
24
+ *
25
+ * @param ErrorHandler $errorHandler Error handling used to report errors
26
+ */
27
+ public function __construct(ErrorHandler $errorHandler) {
28
+ $this->errorHandler = $errorHandler;
29
+ }
30
+
31
+ /**
32
+ * Start a new namespace.
33
+ *
34
+ * This also resets the alias table.
35
+ *
36
+ * @param Name|null $namespace Null is the global namespace
37
+ */
38
+ public function startNamespace(?Name $namespace = null): void {
39
+ $this->namespace = $namespace;
40
+ $this->origAliases = $this->aliases = [
41
+ Stmt\Use_::TYPE_NORMAL => [],
42
+ Stmt\Use_::TYPE_FUNCTION => [],
43
+ Stmt\Use_::TYPE_CONSTANT => [],
44
+ ];
45
+ }
46
+
47
+ /**
48
+ * Add an alias / import.
49
+ *
50
+ * @param Name $name Original name
51
+ * @param string $aliasName Aliased name
52
+ * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_*
53
+ * @param array<string, mixed> $errorAttrs Attributes to use to report an error
54
+ */
55
+ public function addAlias(Name $name, string $aliasName, int $type, array $errorAttrs = []): void {
56
+ // Constant names are case sensitive, everything else case insensitive
57
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
58
+ $aliasLookupName = $aliasName;
59
+ } else {
60
+ $aliasLookupName = strtolower($aliasName);
61
+ }
62
+
63
+ if (isset($this->aliases[$type][$aliasLookupName])) {
64
+ $typeStringMap = [
65
+ Stmt\Use_::TYPE_NORMAL => '',
66
+ Stmt\Use_::TYPE_FUNCTION => 'function ',
67
+ Stmt\Use_::TYPE_CONSTANT => 'const ',
68
+ ];
69
+
70
+ $this->errorHandler->handleError(new Error(
71
+ sprintf(
72
+ 'Cannot use %s%s as %s because the name is already in use',
73
+ $typeStringMap[$type], $name, $aliasName
74
+ ),
75
+ $errorAttrs
76
+ ));
77
+ return;
78
+ }
79
+
80
+ $this->aliases[$type][$aliasLookupName] = $name;
81
+ $this->origAliases[$type][$aliasName] = $name;
82
+ }
83
+
84
+ /**
85
+ * Get current namespace.
86
+ *
87
+ * @return null|Name Namespace (or null if global namespace)
88
+ */
89
+ public function getNamespace(): ?Name {
90
+ return $this->namespace;
91
+ }
92
+
93
+ /**
94
+ * Get resolved name.
95
+ *
96
+ * @param Name $name Name to resolve
97
+ * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_{FUNCTION|CONSTANT}
98
+ *
99
+ * @return null|Name Resolved name, or null if static resolution is not possible
100
+ */
101
+ public function getResolvedName(Name $name, int $type): ?Name {
102
+ // don't resolve special class names
103
+ if ($type === Stmt\Use_::TYPE_NORMAL && $name->isSpecialClassName()) {
104
+ if (!$name->isUnqualified()) {
105
+ $this->errorHandler->handleError(new Error(
106
+ sprintf("'\\%s' is an invalid class name", $name->toString()),
107
+ $name->getAttributes()
108
+ ));
109
+ }
110
+ return $name;
111
+ }
112
+
113
+ // fully qualified names are already resolved
114
+ if ($name->isFullyQualified()) {
115
+ return $name;
116
+ }
117
+
118
+ // Try to resolve aliases
119
+ if (null !== $resolvedName = $this->resolveAlias($name, $type)) {
120
+ return $resolvedName;
121
+ }
122
+
123
+ if ($type !== Stmt\Use_::TYPE_NORMAL && $name->isUnqualified()) {
124
+ if (null === $this->namespace) {
125
+ // outside of a namespace unaliased unqualified is same as fully qualified
126
+ return new FullyQualified($name, $name->getAttributes());
127
+ }
128
+
129
+ // Cannot resolve statically
130
+ return null;
131
+ }
132
+
133
+ // if no alias exists prepend current namespace
134
+ return FullyQualified::concat($this->namespace, $name, $name->getAttributes());
135
+ }
136
+
137
+ /**
138
+ * Get resolved class name.
139
+ *
140
+ * @param Name $name Class ame to resolve
141
+ *
142
+ * @return Name Resolved name
143
+ */
144
+ public function getResolvedClassName(Name $name): Name {
145
+ return $this->getResolvedName($name, Stmt\Use_::TYPE_NORMAL);
146
+ }
147
+
148
+ /**
149
+ * Get possible ways of writing a fully qualified name (e.g., by making use of aliases).
150
+ *
151
+ * @param string $name Fully-qualified name (without leading namespace separator)
152
+ * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_*
153
+ *
154
+ * @return Name[] Possible representations of the name
155
+ */
156
+ public function getPossibleNames(string $name, int $type): array {
157
+ $lcName = strtolower($name);
158
+
159
+ if ($type === Stmt\Use_::TYPE_NORMAL) {
160
+ // self, parent and static must always be unqualified
161
+ if ($lcName === "self" || $lcName === "parent" || $lcName === "static") {
162
+ return [new Name($name)];
163
+ }
164
+ }
165
+
166
+ // Collect possible ways to write this name, starting with the fully-qualified name
167
+ $possibleNames = [new FullyQualified($name)];
168
+
169
+ if (null !== $nsRelativeName = $this->getNamespaceRelativeName($name, $lcName, $type)) {
170
+ // Make sure there is no alias that makes the normally namespace-relative name
171
+ // into something else
172
+ if (null === $this->resolveAlias($nsRelativeName, $type)) {
173
+ $possibleNames[] = $nsRelativeName;
174
+ }
175
+ }
176
+
177
+ // Check for relevant namespace use statements
178
+ foreach ($this->origAliases[Stmt\Use_::TYPE_NORMAL] as $alias => $orig) {
179
+ $lcOrig = $orig->toLowerString();
180
+ if (0 === strpos($lcName, $lcOrig . '\\')) {
181
+ $possibleNames[] = new Name($alias . substr($name, strlen($lcOrig)));
182
+ }
183
+ }
184
+
185
+ // Check for relevant type-specific use statements
186
+ foreach ($this->origAliases[$type] as $alias => $orig) {
187
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
188
+ // Constants are are complicated-sensitive
189
+ $normalizedOrig = $this->normalizeConstName($orig->toString());
190
+ if ($normalizedOrig === $this->normalizeConstName($name)) {
191
+ $possibleNames[] = new Name($alias);
192
+ }
193
+ } else {
194
+ // Everything else is case-insensitive
195
+ if ($orig->toLowerString() === $lcName) {
196
+ $possibleNames[] = new Name($alias);
197
+ }
198
+ }
199
+ }
200
+
201
+ return $possibleNames;
202
+ }
203
+
204
+ /**
205
+ * Get shortest representation of this fully-qualified name.
206
+ *
207
+ * @param string $name Fully-qualified name (without leading namespace separator)
208
+ * @param Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_*
209
+ *
210
+ * @return Name Shortest representation
211
+ */
212
+ public function getShortName(string $name, int $type): Name {
213
+ $possibleNames = $this->getPossibleNames($name, $type);
214
+
215
+ // Find shortest name
216
+ $shortestName = null;
217
+ $shortestLength = \INF;
218
+ foreach ($possibleNames as $possibleName) {
219
+ $length = strlen($possibleName->toCodeString());
220
+ if ($length < $shortestLength) {
221
+ $shortestName = $possibleName;
222
+ $shortestLength = $length;
223
+ }
224
+ }
225
+
226
+ return $shortestName;
227
+ }
228
+
229
+ private function resolveAlias(Name $name, int $type): ?FullyQualified {
230
+ $firstPart = $name->getFirst();
231
+
232
+ if ($name->isQualified()) {
233
+ // resolve aliases for qualified names, always against class alias table
234
+ $checkName = strtolower($firstPart);
235
+ if (isset($this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName])) {
236
+ $alias = $this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName];
237
+ return FullyQualified::concat($alias, $name->slice(1), $name->getAttributes());
238
+ }
239
+ } elseif ($name->isUnqualified()) {
240
+ // constant aliases are case-sensitive, function aliases case-insensitive
241
+ $checkName = $type === Stmt\Use_::TYPE_CONSTANT ? $firstPart : strtolower($firstPart);
242
+ if (isset($this->aliases[$type][$checkName])) {
243
+ // resolve unqualified aliases
244
+ return new FullyQualified($this->aliases[$type][$checkName], $name->getAttributes());
245
+ }
246
+ }
247
+
248
+ // No applicable aliases
249
+ return null;
250
+ }
251
+
252
+ private function getNamespaceRelativeName(string $name, string $lcName, int $type): ?Name {
253
+ if (null === $this->namespace) {
254
+ return new Name($name);
255
+ }
256
+
257
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
258
+ // The constants true/false/null always resolve to the global symbols, even inside a
259
+ // namespace, so they may be used without qualification
260
+ if ($lcName === "true" || $lcName === "false" || $lcName === "null") {
261
+ return new Name($name);
262
+ }
263
+ }
264
+
265
+ $namespacePrefix = strtolower($this->namespace . '\\');
266
+ if (0 === strpos($lcName, $namespacePrefix)) {
267
+ return new Name(substr($name, strlen($namespacePrefix)));
268
+ }
269
+
270
+ return null;
271
+ }
272
+
273
+ private function normalizeConstName(string $name): string {
274
+ $nsSep = strrpos($name, '\\');
275
+ if (false === $nsSep) {
276
+ return $name;
277
+ }
278
+
279
+ // Constants have case-insensitive namespace and case-sensitive short-name
280
+ $ns = substr($name, 0, $nsSep);
281
+ $shortName = substr($name, $nsSep + 1);
282
+ return strtolower($ns) . '\\' . $shortName;
283
+ }
284
+ }
@@ -0,0 +1,44 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ class Arg extends NodeAbstract {
8
+ /** @var Identifier|null Parameter name (for named parameters) */
9
+ public ?Identifier $name;
10
+ /** @var Expr Value to pass */
11
+ public Expr $value;
12
+ /** @var bool Whether to pass by ref */
13
+ public bool $byRef;
14
+ /** @var bool Whether to unpack the argument */
15
+ public bool $unpack;
16
+
17
+ /**
18
+ * Constructs a function call argument node.
19
+ *
20
+ * @param Expr $value Value to pass
21
+ * @param bool $byRef Whether to pass by ref
22
+ * @param bool $unpack Whether to unpack the argument
23
+ * @param array<string, mixed> $attributes Additional attributes
24
+ * @param Identifier|null $name Parameter name (for named parameters)
25
+ */
26
+ public function __construct(
27
+ Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = [],
28
+ ?Identifier $name = null
29
+ ) {
30
+ $this->attributes = $attributes;
31
+ $this->name = $name;
32
+ $this->value = $value;
33
+ $this->byRef = $byRef;
34
+ $this->unpack = $unpack;
35
+ }
36
+
37
+ public function getSubNodeNames(): array {
38
+ return ['name', 'value', 'byRef', 'unpack'];
39
+ }
40
+
41
+ public function getType(): string {
42
+ return 'Arg';
43
+ }
44
+ }
@@ -0,0 +1,43 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ class ArrayItem extends NodeAbstract {
8
+ /** @var null|Expr Key */
9
+ public ?Expr $key;
10
+ /** @var Expr Value */
11
+ public Expr $value;
12
+ /** @var bool Whether to assign by reference */
13
+ public bool $byRef;
14
+ /** @var bool Whether to unpack the argument */
15
+ public bool $unpack;
16
+
17
+ /**
18
+ * Constructs an array item node.
19
+ *
20
+ * @param Expr $value Value
21
+ * @param null|Expr $key Key
22
+ * @param bool $byRef Whether to assign by reference
23
+ * @param array<string, mixed> $attributes Additional attributes
24
+ */
25
+ public function __construct(Expr $value, ?Expr $key = null, bool $byRef = false, array $attributes = [], bool $unpack = false) {
26
+ $this->attributes = $attributes;
27
+ $this->key = $key;
28
+ $this->value = $value;
29
+ $this->byRef = $byRef;
30
+ $this->unpack = $unpack;
31
+ }
32
+
33
+ public function getSubNodeNames(): array {
34
+ return ['key', 'value', 'byRef', 'unpack'];
35
+ }
36
+
37
+ public function getType(): string {
38
+ return 'ArrayItem';
39
+ }
40
+ }
41
+
42
+ // @deprecated compatibility alias
43
+ class_alias(ArrayItem::class, Expr\ArrayItem::class);
@@ -0,0 +1,33 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\Node;
6
+ use PhpParser\NodeAbstract;
7
+
8
+ class Attribute extends NodeAbstract {
9
+ /** @var Name Attribute name */
10
+ public Name $name;
11
+
12
+ /** @var list<Arg> Attribute arguments */
13
+ public array $args;
14
+
15
+ /**
16
+ * @param Node\Name $name Attribute name
17
+ * @param list<Arg> $args Attribute arguments
18
+ * @param array<string, mixed> $attributes Additional node attributes
19
+ */
20
+ public function __construct(Name $name, array $args = [], array $attributes = []) {
21
+ $this->attributes = $attributes;
22
+ $this->name = $name;
23
+ $this->args = $args;
24
+ }
25
+
26
+ public function getSubNodeNames(): array {
27
+ return ['name', 'args'];
28
+ }
29
+
30
+ public function getType(): string {
31
+ return 'Attribute';
32
+ }
33
+ }
@@ -0,0 +1,27 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ class AttributeGroup extends NodeAbstract {
8
+ /** @var Attribute[] Attributes */
9
+ public array $attrs;
10
+
11
+ /**
12
+ * @param Attribute[] $attrs PHP attributes
13
+ * @param array<string, mixed> $attributes Additional node attributes
14
+ */
15
+ public function __construct(array $attrs, array $attributes = []) {
16
+ $this->attributes = $attributes;
17
+ $this->attrs = $attrs;
18
+ }
19
+
20
+ public function getSubNodeNames(): array {
21
+ return ['attrs'];
22
+ }
23
+
24
+ public function getType(): string {
25
+ return 'AttributeGroup';
26
+ }
27
+ }
@@ -0,0 +1,36 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ class ClosureUse extends NodeAbstract {
8
+ /** @var Expr\Variable Variable to use */
9
+ public Expr\Variable $var;
10
+ /** @var bool Whether to use by reference */
11
+ public bool $byRef;
12
+
13
+ /**
14
+ * Constructs a closure use node.
15
+ *
16
+ * @param Expr\Variable $var Variable to use
17
+ * @param bool $byRef Whether to use by reference
18
+ * @param array<string, mixed> $attributes Additional attributes
19
+ */
20
+ public function __construct(Expr\Variable $var, bool $byRef = false, array $attributes = []) {
21
+ $this->attributes = $attributes;
22
+ $this->var = $var;
23
+ $this->byRef = $byRef;
24
+ }
25
+
26
+ public function getSubNodeNames(): array {
27
+ return ['var', 'byRef'];
28
+ }
29
+
30
+ public function getType(): string {
31
+ return 'ClosureUse';
32
+ }
33
+ }
34
+
35
+ // @deprecated compatibility alias
36
+ class_alias(ClosureUse::class, Expr\ClosureUse::class);
@@ -0,0 +1,13 @@
1
+ <?php declare(strict_types=1);
2
+
3
+ namespace PhpParser\Node;
4
+
5
+ use PhpParser\NodeAbstract;
6
+
7
+ /**
8
+ * This is a base class for complex types, including nullable types and union types.
9
+ *
10
+ * It does not provide any shared behavior and exists only for type-checking purposes.
11
+ */
12
+ abstract class ComplexType extends NodeAbstract {
13
+ }