@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.
- package/astgen.js +6 -2
- package/index.js +3 -1
- package/package.json +3 -2
- package/phpastgen.js +31 -0
- package/plugins/autoload.php +25 -0
- package/plugins/bin/atom +1 -1
- package/plugins/bin/atom.bat +1 -1
- package/plugins/bin/php-parse +119 -0
- package/plugins/composer/ClassLoader.php +579 -0
- package/plugins/composer/InstalledVersions.php +359 -0
- package/plugins/composer/LICENSE +21 -0
- package/plugins/composer/autoload_classmap.php +260 -0
- package/plugins/composer/autoload_namespaces.php +9 -0
- package/plugins/composer/autoload_psr4.php +10 -0
- package/plugins/composer/autoload_real.php +36 -0
- package/plugins/composer/autoload_static.php +286 -0
- package/plugins/composer/installed.json +67 -0
- package/plugins/composer/installed.php +32 -0
- 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
- package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.16.0.jar +0 -0
- 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
- package/plugins/lib/{com.github.javaparser.javaparser-core-3.25.6.jar → com.github.javaparser.javaparser-core-3.25.7.jar} +0 -0
- 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
- package/plugins/lib/{com.typesafe.config-1.4.2.jar → com.typesafe.config-1.4.3.jar} +0 -0
- package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
- package/plugins/lib/{io.appthreat.atom-1.7.5.jar → io.appthreat.atom-1.8.1.jar} +0 -0
- package/plugins/lib/{io.appthreat.c2cpg_3-1.0.10.jar → io.appthreat.c2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.0.10.jar → io.appthreat.dataflowengineoss_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.0.10.jar → io.appthreat.javasrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.jimple2cpg_3-1.0.10.jar → io.appthreat.jimple2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.0.10.jar → io.appthreat.jssrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
- package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.0.10.jar → io.appthreat.pysrc2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.semanticcpg_3-1.0.10.jar → io.appthreat.semanticcpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.x2cpg_3-1.0.10.jar → io.appthreat.x2cpg_3-1.1.3.jar} +0 -0
- package/plugins/lib/io.circe.circe-core_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-generic_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-jawn_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-numbers_3-0.14.6.jar +0 -0
- package/plugins/lib/io.circe.circe-parser_3-0.14.6.jar +0 -0
- package/plugins/lib/org.gradle.gradle-tooling-api-8.5.jar +0 -0
- package/plugins/lib/{org.json4s.json4s-ast_3-4.0.6.jar → org.json4s.json4s-ast_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-core_3-4.0.6.jar → org.json4s.json4s-core_3-4.0.7.jar} +0 -0
- 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
- package/plugins/lib/{org.json4s.json4s-native_3-4.0.6.jar → org.json4s.json4s-native_3-4.0.7.jar} +0 -0
- package/plugins/lib/{org.json4s.json4s-scalap_3-4.0.6.jar → org.json4s.json4s-scalap_3-4.0.7.jar} +0 -0
- package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.3.0.jar +0 -0
- package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +31 -0
- package/plugins/nikic/php-parser/LICENSE +29 -0
- package/plugins/nikic/php-parser/Makefile +10 -0
- package/plugins/nikic/php-parser/README.md +233 -0
- package/plugins/nikic/php-parser/bin/php-parse +206 -0
- package/plugins/nikic/php-parser/composer.json +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +87 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +149 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +161 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +333 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +207 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +234 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Error.php +171 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +271 -0
- package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +226 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +56 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +69 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +75 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +269 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +84 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +3 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node.php +146 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +178 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +290 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +278 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +262 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +51 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +38 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2699 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2717 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1241 -0
- package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +164 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1177 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1655 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Token.php +18 -0
- package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +56 -0
- package/plugins/nikic/php-parser/phpstan-baseline.neon +236 -0
- package/plugins/nikic/php-parser/phpstan.neon.dist +8 -0
- package/utils.mjs +10 -0
- package/plugins/lib/com.fasterxml.jackson.core.jackson-core-2.15.2.jar +0 -0
- package/plugins/lib/io.appthreat.atom-1.7.5-classpath.jar +0 -0
- package/plugins/lib/io.circe.circe-core_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-generic_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-jawn_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-numbers_3-0.14.5.jar +0 -0
- package/plugins/lib/io.circe.circe-parser_3-0.14.5.jar +0 -0
- package/plugins/lib/org.gradle.gradle-tooling-api-8.3.jar +0 -0
- package/plugins/lib/org.scala-lang.modules.scala-parser-combinators_3-2.2.0.jar +0 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser;
|
|
4
|
+
|
|
5
|
+
class NodeTraverser implements NodeTraverserInterface {
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Use NodeVisitor::DONT_TRAVERSE_CHILDREN instead.
|
|
8
|
+
*/
|
|
9
|
+
public const DONT_TRAVERSE_CHILDREN = NodeVisitor::DONT_TRAVERSE_CHILDREN;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Use NodeVisitor::STOP_TRAVERSAL instead.
|
|
13
|
+
*/
|
|
14
|
+
public const STOP_TRAVERSAL = NodeVisitor::STOP_TRAVERSAL;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use NodeVisitor::REMOVE_NODE instead.
|
|
18
|
+
*/
|
|
19
|
+
public const REMOVE_NODE = NodeVisitor::REMOVE_NODE;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Use NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN instead.
|
|
23
|
+
*/
|
|
24
|
+
public const DONT_TRAVERSE_CURRENT_AND_CHILDREN = NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN;
|
|
25
|
+
|
|
26
|
+
/** @var list<NodeVisitor> Visitors */
|
|
27
|
+
protected array $visitors = [];
|
|
28
|
+
|
|
29
|
+
/** @var bool Whether traversal should be stopped */
|
|
30
|
+
protected bool $stopTraversal;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create a traverser with the given visitors.
|
|
34
|
+
*
|
|
35
|
+
* @param NodeVisitor ...$visitors Node visitors
|
|
36
|
+
*/
|
|
37
|
+
public function __construct(NodeVisitor ...$visitors) {
|
|
38
|
+
$this->visitors = $visitors;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Adds a visitor.
|
|
43
|
+
*
|
|
44
|
+
* @param NodeVisitor $visitor Visitor to add
|
|
45
|
+
*/
|
|
46
|
+
public function addVisitor(NodeVisitor $visitor): void {
|
|
47
|
+
$this->visitors[] = $visitor;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Removes an added visitor.
|
|
52
|
+
*/
|
|
53
|
+
public function removeVisitor(NodeVisitor $visitor): void {
|
|
54
|
+
$index = array_search($visitor, $this->visitors);
|
|
55
|
+
if ($index !== false) {
|
|
56
|
+
array_splice($this->visitors, $index, 1, []);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Traverses an array of nodes using the registered visitors.
|
|
62
|
+
*
|
|
63
|
+
* @param Node[] $nodes Array of nodes
|
|
64
|
+
*
|
|
65
|
+
* @return Node[] Traversed array of nodes
|
|
66
|
+
*/
|
|
67
|
+
public function traverse(array $nodes): array {
|
|
68
|
+
$this->stopTraversal = false;
|
|
69
|
+
|
|
70
|
+
foreach ($this->visitors as $visitor) {
|
|
71
|
+
if (null !== $return = $visitor->beforeTraverse($nodes)) {
|
|
72
|
+
$nodes = $return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
$nodes = $this->traverseArray($nodes);
|
|
77
|
+
|
|
78
|
+
for ($i = \count($this->visitors) - 1; $i >= 0; --$i) {
|
|
79
|
+
$visitor = $this->visitors[$i];
|
|
80
|
+
if (null !== $return = $visitor->afterTraverse($nodes)) {
|
|
81
|
+
$nodes = $return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return $nodes;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Recursively traverse a node.
|
|
90
|
+
*
|
|
91
|
+
* @param Node $node Node to traverse.
|
|
92
|
+
*/
|
|
93
|
+
protected function traverseNode(Node $node): void {
|
|
94
|
+
foreach ($node->getSubNodeNames() as $name) {
|
|
95
|
+
$subNode = $node->$name;
|
|
96
|
+
|
|
97
|
+
if (\is_array($subNode)) {
|
|
98
|
+
$node->$name = $this->traverseArray($subNode);
|
|
99
|
+
if ($this->stopTraversal) {
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
} elseif ($subNode instanceof Node) {
|
|
103
|
+
$traverseChildren = true;
|
|
104
|
+
$visitorIndex = -1;
|
|
105
|
+
|
|
106
|
+
foreach ($this->visitors as $visitorIndex => $visitor) {
|
|
107
|
+
$return = $visitor->enterNode($subNode);
|
|
108
|
+
if (null !== $return) {
|
|
109
|
+
if ($return instanceof Node) {
|
|
110
|
+
$this->ensureReplacementReasonable($subNode, $return);
|
|
111
|
+
$subNode = $node->$name = $return;
|
|
112
|
+
} elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) {
|
|
113
|
+
$traverseChildren = false;
|
|
114
|
+
} elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
|
|
115
|
+
$traverseChildren = false;
|
|
116
|
+
break;
|
|
117
|
+
} elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
|
|
118
|
+
$this->stopTraversal = true;
|
|
119
|
+
break 2;
|
|
120
|
+
} elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
|
|
121
|
+
$node->$name = null;
|
|
122
|
+
continue 2;
|
|
123
|
+
} else {
|
|
124
|
+
throw new \LogicException(
|
|
125
|
+
'enterNode() returned invalid value of type ' . gettype($return)
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if ($traverseChildren) {
|
|
132
|
+
$this->traverseNode($subNode);
|
|
133
|
+
if ($this->stopTraversal) {
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
for (; $visitorIndex >= 0; --$visitorIndex) {
|
|
139
|
+
$visitor = $this->visitors[$visitorIndex];
|
|
140
|
+
$return = $visitor->leaveNode($subNode);
|
|
141
|
+
|
|
142
|
+
if (null !== $return) {
|
|
143
|
+
if ($return instanceof Node) {
|
|
144
|
+
$this->ensureReplacementReasonable($subNode, $return);
|
|
145
|
+
$subNode = $node->$name = $return;
|
|
146
|
+
} elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
|
|
147
|
+
$this->stopTraversal = true;
|
|
148
|
+
break 2;
|
|
149
|
+
} elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
|
|
150
|
+
$node->$name = null;
|
|
151
|
+
break;
|
|
152
|
+
} elseif (\is_array($return)) {
|
|
153
|
+
throw new \LogicException(
|
|
154
|
+
'leaveNode() may only return an array ' .
|
|
155
|
+
'if the parent structure is an array'
|
|
156
|
+
);
|
|
157
|
+
} else {
|
|
158
|
+
throw new \LogicException(
|
|
159
|
+
'leaveNode() returned invalid value of type ' . gettype($return)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Recursively traverse array (usually of nodes).
|
|
170
|
+
*
|
|
171
|
+
* @param array $nodes Array to traverse
|
|
172
|
+
*
|
|
173
|
+
* @return array Result of traversal (may be original array or changed one)
|
|
174
|
+
*/
|
|
175
|
+
protected function traverseArray(array $nodes): array {
|
|
176
|
+
$doNodes = [];
|
|
177
|
+
|
|
178
|
+
foreach ($nodes as $i => $node) {
|
|
179
|
+
if ($node instanceof Node) {
|
|
180
|
+
$traverseChildren = true;
|
|
181
|
+
$visitorIndex = -1;
|
|
182
|
+
|
|
183
|
+
foreach ($this->visitors as $visitorIndex => $visitor) {
|
|
184
|
+
$return = $visitor->enterNode($node);
|
|
185
|
+
if (null !== $return) {
|
|
186
|
+
if ($return instanceof Node) {
|
|
187
|
+
$this->ensureReplacementReasonable($node, $return);
|
|
188
|
+
$nodes[$i] = $node = $return;
|
|
189
|
+
} elseif (\is_array($return)) {
|
|
190
|
+
$doNodes[] = [$i, $return];
|
|
191
|
+
continue 2;
|
|
192
|
+
} elseif (NodeVisitor::REMOVE_NODE === $return) {
|
|
193
|
+
$doNodes[] = [$i, []];
|
|
194
|
+
continue 2;
|
|
195
|
+
} elseif (NodeVisitor::DONT_TRAVERSE_CHILDREN === $return) {
|
|
196
|
+
$traverseChildren = false;
|
|
197
|
+
} elseif (NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
|
|
198
|
+
$traverseChildren = false;
|
|
199
|
+
break;
|
|
200
|
+
} elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
|
|
201
|
+
$this->stopTraversal = true;
|
|
202
|
+
break 2;
|
|
203
|
+
} elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
|
|
204
|
+
throw new \LogicException(
|
|
205
|
+
'REPLACE_WITH_NULL can not be used if the parent structure is an array');
|
|
206
|
+
} else {
|
|
207
|
+
throw new \LogicException(
|
|
208
|
+
'enterNode() returned invalid value of type ' . gettype($return)
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if ($traverseChildren) {
|
|
215
|
+
$this->traverseNode($node);
|
|
216
|
+
if ($this->stopTraversal) {
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
for (; $visitorIndex >= 0; --$visitorIndex) {
|
|
222
|
+
$visitor = $this->visitors[$visitorIndex];
|
|
223
|
+
$return = $visitor->leaveNode($node);
|
|
224
|
+
|
|
225
|
+
if (null !== $return) {
|
|
226
|
+
if ($return instanceof Node) {
|
|
227
|
+
$this->ensureReplacementReasonable($node, $return);
|
|
228
|
+
$nodes[$i] = $node = $return;
|
|
229
|
+
} elseif (\is_array($return)) {
|
|
230
|
+
$doNodes[] = [$i, $return];
|
|
231
|
+
break;
|
|
232
|
+
} elseif (NodeVisitor::REMOVE_NODE === $return) {
|
|
233
|
+
$doNodes[] = [$i, []];
|
|
234
|
+
break;
|
|
235
|
+
} elseif (NodeVisitor::STOP_TRAVERSAL === $return) {
|
|
236
|
+
$this->stopTraversal = true;
|
|
237
|
+
break 2;
|
|
238
|
+
} elseif (NodeVisitor::REPLACE_WITH_NULL === $return) {
|
|
239
|
+
throw new \LogicException(
|
|
240
|
+
'REPLACE_WITH_NULL can not be used if the parent structure is an array');
|
|
241
|
+
} else {
|
|
242
|
+
throw new \LogicException(
|
|
243
|
+
'leaveNode() returned invalid value of type ' . gettype($return)
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
} elseif (\is_array($node)) {
|
|
249
|
+
throw new \LogicException('Invalid node structure: Contains nested arrays');
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
if (!empty($doNodes)) {
|
|
254
|
+
while (list($i, $replace) = array_pop($doNodes)) {
|
|
255
|
+
array_splice($nodes, $i, 1, $replace);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
return $nodes;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
private function ensureReplacementReasonable(Node $old, Node $new): void {
|
|
263
|
+
if ($old instanceof Node\Stmt && $new instanceof Node\Expr) {
|
|
264
|
+
throw new \LogicException(
|
|
265
|
+
"Trying to replace statement ({$old->getType()}) " .
|
|
266
|
+
"with expression ({$new->getType()}). Are you missing a " .
|
|
267
|
+
"Stmt_Expression wrapper?"
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if ($old instanceof Node\Expr && $new instanceof Node\Stmt) {
|
|
272
|
+
throw new \LogicException(
|
|
273
|
+
"Trying to replace expression ({$old->getType()}) " .
|
|
274
|
+
"with statement ({$new->getType()})"
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser;
|
|
4
|
+
|
|
5
|
+
interface NodeTraverserInterface {
|
|
6
|
+
/**
|
|
7
|
+
* Adds a visitor.
|
|
8
|
+
*
|
|
9
|
+
* @param NodeVisitor $visitor Visitor to add
|
|
10
|
+
*/
|
|
11
|
+
public function addVisitor(NodeVisitor $visitor): void;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Removes an added visitor.
|
|
15
|
+
*/
|
|
16
|
+
public function removeVisitor(NodeVisitor $visitor): void;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Traverses an array of nodes using the registered visitors.
|
|
20
|
+
*
|
|
21
|
+
* @param Node[] $nodes Array of nodes
|
|
22
|
+
*
|
|
23
|
+
* @return Node[] Traversed array of nodes
|
|
24
|
+
*/
|
|
25
|
+
public function traverse(array $nodes): array;
|
|
26
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\NodeVisitor;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Node;
|
|
6
|
+
use PhpParser\NodeVisitorAbstract;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Visitor cloning all nodes and linking to the original nodes using an attribute.
|
|
10
|
+
*
|
|
11
|
+
* This visitor is required to perform format-preserving pretty prints.
|
|
12
|
+
*/
|
|
13
|
+
class CloningVisitor extends NodeVisitorAbstract {
|
|
14
|
+
public function enterNode(Node $origNode) {
|
|
15
|
+
$node = clone $origNode;
|
|
16
|
+
$node->setAttribute('origNode', $origNode);
|
|
17
|
+
return $node;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\NodeVisitor;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Comment;
|
|
6
|
+
use PhpParser\Node;
|
|
7
|
+
use PhpParser\NodeVisitorAbstract;
|
|
8
|
+
use PhpParser\Token;
|
|
9
|
+
|
|
10
|
+
class CommentAnnotatingVisitor extends NodeVisitorAbstract {
|
|
11
|
+
/** @var int Last seen token start position */
|
|
12
|
+
private int $pos = 0;
|
|
13
|
+
/** @var Token[] Token array */
|
|
14
|
+
private array $tokens;
|
|
15
|
+
/** @var list<int> Token positions of comments */
|
|
16
|
+
private array $commentPositions = [];
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Create a comment annotation visitor.
|
|
20
|
+
*
|
|
21
|
+
* @param Token[] $tokens Token array
|
|
22
|
+
*/
|
|
23
|
+
public function __construct(array $tokens) {
|
|
24
|
+
$this->tokens = $tokens;
|
|
25
|
+
|
|
26
|
+
// Collect positions of comments. We use this to avoid traversing parts of the AST where
|
|
27
|
+
// there are no comments.
|
|
28
|
+
foreach ($tokens as $i => $token) {
|
|
29
|
+
if ($token->id === \T_COMMENT || $token->id === \T_DOC_COMMENT) {
|
|
30
|
+
$this->commentPositions[] = $i;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public function enterNode(Node $node) {
|
|
36
|
+
$nextCommentPos = current($this->commentPositions);
|
|
37
|
+
if ($nextCommentPos === false) {
|
|
38
|
+
// No more comments.
|
|
39
|
+
return self::STOP_TRAVERSAL;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
$oldPos = $this->pos;
|
|
43
|
+
$this->pos = $pos = $node->getStartTokenPos();
|
|
44
|
+
if ($nextCommentPos > $oldPos && $nextCommentPos < $pos) {
|
|
45
|
+
$comments = [];
|
|
46
|
+
while (--$pos >= $oldPos) {
|
|
47
|
+
$token = $this->tokens[$pos];
|
|
48
|
+
if ($token->id === \T_DOC_COMMENT) {
|
|
49
|
+
$comments[] = new Comment\Doc(
|
|
50
|
+
$token->text, $token->line, $token->pos, $pos,
|
|
51
|
+
$token->getEndLine(), $token->getEndPos() - 1, $pos);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if ($token->id === \T_COMMENT) {
|
|
55
|
+
$comments[] = new Comment(
|
|
56
|
+
$token->text, $token->line, $token->pos, $pos,
|
|
57
|
+
$token->getEndLine(), $token->getEndPos() - 1, $pos);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if ($token->id !== \T_WHITESPACE) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (!empty($comments)) {
|
|
65
|
+
$node->setAttribute('comments', array_reverse($comments));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
do {
|
|
69
|
+
$nextCommentPos = next($this->commentPositions);
|
|
70
|
+
} while ($nextCommentPos !== false && $nextCommentPos < $this->pos);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
$endPos = $node->getEndTokenPos();
|
|
74
|
+
if ($nextCommentPos > $endPos) {
|
|
75
|
+
// Skip children if there are no comments located inside this node.
|
|
76
|
+
$this->pos = $endPos;
|
|
77
|
+
return self::DONT_TRAVERSE_CHILDREN;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\NodeVisitor;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Node;
|
|
6
|
+
use PhpParser\NodeVisitorAbstract;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This visitor can be used to find and collect all nodes satisfying some criterion determined by
|
|
10
|
+
* a filter callback.
|
|
11
|
+
*/
|
|
12
|
+
class FindingVisitor extends NodeVisitorAbstract {
|
|
13
|
+
/** @var callable Filter callback */
|
|
14
|
+
protected $filterCallback;
|
|
15
|
+
/** @var Node[] Found nodes */
|
|
16
|
+
protected array $foundNodes;
|
|
17
|
+
|
|
18
|
+
public function __construct(callable $filterCallback) {
|
|
19
|
+
$this->filterCallback = $filterCallback;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get found nodes satisfying the filter callback.
|
|
24
|
+
*
|
|
25
|
+
* Nodes are returned in pre-order.
|
|
26
|
+
*
|
|
27
|
+
* @return Node[] Found nodes
|
|
28
|
+
*/
|
|
29
|
+
public function getFoundNodes(): array {
|
|
30
|
+
return $this->foundNodes;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public function beforeTraverse(array $nodes): ?array {
|
|
34
|
+
$this->foundNodes = [];
|
|
35
|
+
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public function enterNode(Node $node) {
|
|
40
|
+
$filterCallback = $this->filterCallback;
|
|
41
|
+
if ($filterCallback($node)) {
|
|
42
|
+
$this->foundNodes[] = $node;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\NodeVisitor;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Node;
|
|
6
|
+
use PhpParser\NodeVisitor;
|
|
7
|
+
use PhpParser\NodeVisitorAbstract;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This visitor can be used to find the first node satisfying some criterion determined by
|
|
11
|
+
* a filter callback.
|
|
12
|
+
*/
|
|
13
|
+
class FirstFindingVisitor extends NodeVisitorAbstract {
|
|
14
|
+
/** @var callable Filter callback */
|
|
15
|
+
protected $filterCallback;
|
|
16
|
+
/** @var null|Node Found node */
|
|
17
|
+
protected ?Node $foundNode;
|
|
18
|
+
|
|
19
|
+
public function __construct(callable $filterCallback) {
|
|
20
|
+
$this->filterCallback = $filterCallback;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get found node satisfying the filter callback.
|
|
25
|
+
*
|
|
26
|
+
* Returns null if no node satisfies the filter callback.
|
|
27
|
+
*
|
|
28
|
+
* @return null|Node Found node (or null if not found)
|
|
29
|
+
*/
|
|
30
|
+
public function getFoundNode(): ?Node {
|
|
31
|
+
return $this->foundNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public function beforeTraverse(array $nodes): ?array {
|
|
35
|
+
$this->foundNode = null;
|
|
36
|
+
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public function enterNode(Node $node) {
|
|
41
|
+
$filterCallback = $this->filterCallback;
|
|
42
|
+
if ($filterCallback($node)) {
|
|
43
|
+
$this->foundNode = $node;
|
|
44
|
+
return NodeVisitor::STOP_TRAVERSAL;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|