@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,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
|
+
}
|