@appthreat/atom 1.8.1 → 1.8.3
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/package.json +1 -1
- package/phpastgen.js +7 -1
- package/plugins/autoload.php +1 -1
- package/plugins/bin/atom +1 -1
- package/plugins/bin/atom.bat +1 -1
- package/plugins/composer/autoload_classmap.php +18 -18
- package/plugins/composer/autoload_real.php +4 -4
- package/plugins/composer/autoload_static.php +22 -22
- package/plugins/composer/installed.json +10 -12
- package/plugins/composer/installed.php +9 -9
- package/plugins/lib/io.appthreat.atom-1.8.3-classpath.jar +0 -0
- package/plugins/lib/{io.appthreat.atom-1.8.1.jar → io.appthreat.atom-1.8.3.jar} +0 -0
- package/plugins/lib/{io.appthreat.c2cpg_3-1.1.3.jar → io.appthreat.c2cpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.1.3.jar → io.appthreat.dataflowengineoss_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.1.3.jar → io.appthreat.javasrc2cpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.jimple2cpg_3-1.1.3.jar → io.appthreat.jimple2cpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.1.3.jar → io.appthreat.jssrc2cpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/io.appthreat.php2atom_3-1.1.5.jar +0 -0
- package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.1.3.jar → io.appthreat.pysrc2cpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.semanticcpg_3-1.1.3.jar → io.appthreat.semanticcpg_3-1.1.5.jar} +0 -0
- package/plugins/lib/{io.appthreat.x2cpg_3-1.1.3.jar → io.appthreat.x2cpg_3-1.1.5.jar} +0 -0
- package/plugins/nikic/php-parser/README.md +12 -20
- package/plugins/nikic/php-parser/bin/php-parse +10 -11
- package/plugins/nikic/php-parser/composer.json +4 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +15 -17
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Class_.php +30 -35
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +4 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +7 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +27 -26
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +7 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Function_.php +7 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +10 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Method.php +15 -16
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +5 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Param.php +35 -16
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Property.php +19 -19
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +5 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +28 -25
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +11 -16
- package/plugins/nikic/php-parser/lib/PhpParser/Builder/Use_.php +8 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Builder.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderFactory.php +69 -45
- package/plugins/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +19 -17
- package/plugins/nikic/php-parser/lib/PhpParser/Comment/Doc.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Comment.php +67 -35
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +3 -3
- package/plugins/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +10 -15
- package/plugins/nikic/php-parser/lib/PhpParser/Error.php +33 -24
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +9 -6
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/ErrorHandler.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +7 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/Differ.php +22 -36
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +13 -20
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +70 -55
- package/plugins/nikic/php-parser/lib/PhpParser/JsonDecoder.php +10 -15
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +93 -68
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +18 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php +47 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +15 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +11 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php +76 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php +23 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +25 -19
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +10 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +29 -22
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php +105 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +3 -3
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +15 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +5 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +5 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Lexer.php +513 -69
- package/plugins/nikic/php-parser/lib/PhpParser/NameContext.php +24 -23
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Arg.php +15 -13
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Attribute.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +7 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Const_.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +39 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +11 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +28 -33
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +11 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +7 -3
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +6 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +6 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +10 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +26 -33
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +32 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +6 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +14 -13
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +11 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +8 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +7 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +12 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +12 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +10 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +7 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +10 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +9 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +13 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +11 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +13 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +7 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +7 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Expr.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +8 -5
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Identifier.php +13 -13
- package/plugins/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +9 -6
- package/plugins/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Name.php +56 -71
- package/plugins/nikic/php-parser/lib/PhpParser/Node/NullableType.php +10 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Param.php +22 -46
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +75 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +29 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +28 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +78 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +26 -30
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +11 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +12 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +32 -24
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +13 -13
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +54 -47
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +89 -46
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +32 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +12 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +12 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +13 -17
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +15 -19
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +17 -20
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +24 -28
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +14 -16
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +15 -18
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +10 -13
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +12 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +37 -28
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +32 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +35 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +8 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php +30 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +9 -8
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +13 -12
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +4 -3
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +8 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +12 -11
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +50 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +16 -16
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +10 -9
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UnionType.php +8 -7
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +2 -2
- package/plugins/nikic/php-parser/lib/PhpParser/Node.php +29 -24
- package/plugins/nikic/php-parser/lib/PhpParser/NodeAbstract.php +20 -20
- package/plugins/nikic/php-parser/lib/PhpParser/NodeDumper.php +84 -168
- package/plugins/nikic/php-parser/lib/PhpParser/NodeFinder.php +19 -28
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverser.php +84 -71
- package/plugins/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +7 -4
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +5 -4
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +7 -6
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +28 -30
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +3 -2
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +11 -8
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor.php +7 -59
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +2 -1
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Multiple.php +55 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php5.php +2682 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php7.php +1522 -1323
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Tokens.php +148 -0
- package/plugins/nikic/php-parser/lib/PhpParser/Parser.php +3 -9
- package/plugins/nikic/php-parser/lib/PhpParser/ParserAbstract.php +252 -433
- package/plugins/nikic/php-parser/lib/PhpParser/ParserFactory.php +49 -15
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +335 -386
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +438 -517
- package/plugins/lib/io.appthreat.atom-1.8.1-classpath.jar +0 -0
- package/plugins/lib/io.appthreat.php2atom_3-1.1.3.jar +0 -0
- package/plugins/nikic/php-parser/.php-cs-fixer.dist.php +0 -31
- package/plugins/nikic/php-parser/Makefile +0 -10
- package/plugins/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +0 -237
- package/plugins/nikic/php-parser/lib/PhpParser/Modifiers.php +0 -69
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +0 -43
- package/plugins/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +0 -36
- package/plugins/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +0 -37
- package/plugins/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +0 -32
- package/plugins/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +0 -37
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +0 -78
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +0 -82
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +0 -34
- package/plugins/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +0 -39
- package/plugins/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +0 -29
- package/plugins/nikic/php-parser/lib/PhpParser/Node/UseItem.php +0 -55
- package/plugins/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +0 -82
- package/plugins/nikic/php-parser/lib/PhpParser/Parser/Php8.php +0 -2717
- package/plugins/nikic/php-parser/lib/PhpParser/PhpVersion.php +0 -164
- package/plugins/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +0 -51
- package/plugins/nikic/php-parser/lib/PhpParser/Token.php +0 -18
- package/plugins/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +0 -56
- package/plugins/nikic/php-parser/phpstan-baseline.neon +0 -236
- package/plugins/nikic/php-parser/phpstan.neon.dist +0 -8
|
@@ -2,36 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
6
|
-
use PhpParser\Token;
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
7
6
|
|
|
8
|
-
final class AttributeEmulator extends TokenEmulator
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
final class AttributeEmulator extends TokenEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_8_0;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
public function isEmulationNeeded(string $code): bool
|
|
14
|
+
public function isEmulationNeeded(string $code) : bool
|
|
15
|
+
{
|
|
14
16
|
return strpos($code, '#[') !== false;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
public function emulate(string $code, array $tokens): array
|
|
19
|
+
public function emulate(string $code, array $tokens): array
|
|
20
|
+
{
|
|
18
21
|
// We need to manually iterate and manage a count because we'll change
|
|
19
22
|
// the tokens array on the way.
|
|
23
|
+
$line = 1;
|
|
20
24
|
for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
|
|
21
|
-
$
|
|
22
|
-
if ($token->text === '#' && isset($tokens[$i + 1]) && $tokens[$i + 1]->text === '[') {
|
|
25
|
+
if ($tokens[$i] === '#' && isset($tokens[$i + 1]) && $tokens[$i + 1] === '[') {
|
|
23
26
|
array_splice($tokens, $i, 2, [
|
|
24
|
-
|
|
27
|
+
[\T_ATTRIBUTE, '#[', $line]
|
|
25
28
|
]);
|
|
26
29
|
$c--;
|
|
27
30
|
continue;
|
|
28
31
|
}
|
|
32
|
+
if (\is_array($tokens[$i])) {
|
|
33
|
+
$line += substr_count($tokens[$i][1], "\n");
|
|
34
|
+
}
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
return $tokens;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
|
-
public function reverseEmulate(string $code, array $tokens): array
|
|
40
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
41
|
+
{
|
|
35
42
|
// TODO
|
|
36
43
|
return $tokens;
|
|
37
44
|
}
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
|
+
|
|
7
|
+
final class CoaleseEqualTokenEmulator extends TokenEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_7_4;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public function isEmulationNeeded(string $code): bool
|
|
15
|
+
{
|
|
16
|
+
return strpos($code, '??=') !== false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public function emulate(string $code, array $tokens): array
|
|
20
|
+
{
|
|
21
|
+
// We need to manually iterate and manage a count because we'll change
|
|
22
|
+
// the tokens array on the way
|
|
23
|
+
$line = 1;
|
|
24
|
+
for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
|
|
25
|
+
if (isset($tokens[$i + 1])) {
|
|
26
|
+
if ($tokens[$i][0] === T_COALESCE && $tokens[$i + 1] === '=') {
|
|
27
|
+
array_splice($tokens, $i, 2, [
|
|
28
|
+
[\T_COALESCE_EQUAL, '??=', $line]
|
|
29
|
+
]);
|
|
30
|
+
$c--;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (\is_array($tokens[$i])) {
|
|
35
|
+
$line += substr_count($tokens[$i][1], "\n");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return $tokens;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
43
|
+
{
|
|
44
|
+
// ??= was not valid code previously, don't bother.
|
|
45
|
+
return $tokens;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -2,25 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
6
|
|
|
7
|
-
final class EnumTokenEmulator extends KeywordEmulator
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
final class EnumTokenEmulator extends KeywordEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_8_1;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
public function getKeywordString(): string
|
|
14
|
+
public function getKeywordString(): string
|
|
15
|
+
{
|
|
13
16
|
return 'enum';
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
public function getKeywordToken(): int
|
|
19
|
+
public function getKeywordToken(): int
|
|
20
|
+
{
|
|
17
21
|
return \T_ENUM;
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
protected function isKeywordContext(array $tokens, int $pos): bool
|
|
24
|
+
protected function isKeywordContext(array $tokens, int $pos): bool
|
|
25
|
+
{
|
|
21
26
|
return parent::isKeywordContext($tokens, $pos)
|
|
22
27
|
&& isset($tokens[$pos + 2])
|
|
23
|
-
&& $tokens[$pos + 1]
|
|
24
|
-
&& $tokens[$pos + 2]
|
|
28
|
+
&& $tokens[$pos + 1][0] === \T_WHITESPACE
|
|
29
|
+
&& $tokens[$pos + 2][0] === \T_STRING;
|
|
25
30
|
}
|
|
26
|
-
}
|
|
31
|
+
}
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php
CHANGED
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
6
|
-
use PhpParser\Token;
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
7
6
|
|
|
8
7
|
class ExplicitOctalEmulator extends TokenEmulator {
|
|
9
|
-
public function getPhpVersion():
|
|
10
|
-
return
|
|
8
|
+
public function getPhpVersion(): string {
|
|
9
|
+
return Emulative::PHP_8_1;
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
public function isEmulationNeeded(string $code): bool {
|
|
@@ -16,14 +15,13 @@ class ExplicitOctalEmulator extends TokenEmulator {
|
|
|
16
15
|
|
|
17
16
|
public function emulate(string $code, array $tokens): array {
|
|
18
17
|
for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
|
|
19
|
-
$
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
preg_match('/[oO][0-7]+(?:_[0-7]+)*/', $tokens[$i + 1]->text)
|
|
18
|
+
if ($tokens[$i][0] == \T_LNUMBER && $tokens[$i][1] === '0' &&
|
|
19
|
+
isset($tokens[$i + 1]) && $tokens[$i + 1][0] == \T_STRING &&
|
|
20
|
+
preg_match('/[oO][0-7]+(?:_[0-7]+)*/', $tokens[$i + 1][1])
|
|
23
21
|
) {
|
|
24
|
-
$tokenKind = $this->resolveIntegerOrFloatToken($tokens[$i + 1]
|
|
22
|
+
$tokenKind = $this->resolveIntegerOrFloatToken($tokens[$i + 1][1]);
|
|
25
23
|
array_splice($tokens, $i, 2, [
|
|
26
|
-
|
|
24
|
+
[$tokenKind, '0' . $tokens[$i + 1][1], $tokens[$i][2]],
|
|
27
25
|
]);
|
|
28
26
|
$c--;
|
|
29
27
|
}
|
|
@@ -31,7 +29,8 @@ class ExplicitOctalEmulator extends TokenEmulator {
|
|
|
31
29
|
return $tokens;
|
|
32
30
|
}
|
|
33
31
|
|
|
34
|
-
private function resolveIntegerOrFloatToken(string $str): int
|
|
32
|
+
private function resolveIntegerOrFloatToken(string $str): int
|
|
33
|
+
{
|
|
35
34
|
$str = substr($str, 1);
|
|
36
35
|
$str = str_replace('_', '', $str);
|
|
37
36
|
$num = octdec($str);
|
|
@@ -42,4 +41,4 @@ class ExplicitOctalEmulator extends TokenEmulator {
|
|
|
42
41
|
// Explicit octals were not legal code previously, don't bother.
|
|
43
42
|
return $tokens;
|
|
44
43
|
}
|
|
45
|
-
}
|
|
44
|
+
}
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
|
+
|
|
7
|
+
final class FlexibleDocStringEmulator extends TokenEmulator
|
|
8
|
+
{
|
|
9
|
+
const FLEXIBLE_DOC_STRING_REGEX = <<<'REGEX'
|
|
10
|
+
/<<<[ \t]*(['"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)\1\r?\n
|
|
11
|
+
(?:.*\r?\n)*?
|
|
12
|
+
(?<indentation>\h*)\2(?![a-zA-Z0-9_\x80-\xff])(?<separator>(?:;?[\r\n])?)/x
|
|
13
|
+
REGEX;
|
|
14
|
+
|
|
15
|
+
public function getPhpVersion(): string
|
|
16
|
+
{
|
|
17
|
+
return Emulative::PHP_7_3;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public function isEmulationNeeded(string $code) : bool
|
|
21
|
+
{
|
|
22
|
+
return strpos($code, '<<<') !== false;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public function emulate(string $code, array $tokens): array
|
|
26
|
+
{
|
|
27
|
+
// Handled by preprocessing + fixup.
|
|
28
|
+
return $tokens;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
32
|
+
{
|
|
33
|
+
// Not supported.
|
|
34
|
+
return $tokens;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public function preprocessCode(string $code, array &$patches): string {
|
|
38
|
+
if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) {
|
|
39
|
+
// No heredoc/nowdoc found
|
|
40
|
+
return $code;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Keep track of how much we need to adjust string offsets due to the modifications we
|
|
44
|
+
// already made
|
|
45
|
+
$posDelta = 0;
|
|
46
|
+
foreach ($matches as $match) {
|
|
47
|
+
$indentation = $match['indentation'][0];
|
|
48
|
+
$indentationStart = $match['indentation'][1];
|
|
49
|
+
|
|
50
|
+
$separator = $match['separator'][0];
|
|
51
|
+
$separatorStart = $match['separator'][1];
|
|
52
|
+
|
|
53
|
+
if ($indentation === '' && $separator !== '') {
|
|
54
|
+
// Ordinary heredoc/nowdoc
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if ($indentation !== '') {
|
|
59
|
+
// Remove indentation
|
|
60
|
+
$indentationLen = strlen($indentation);
|
|
61
|
+
$code = substr_replace($code, '', $indentationStart + $posDelta, $indentationLen);
|
|
62
|
+
$patches[] = [$indentationStart + $posDelta, 'add', $indentation];
|
|
63
|
+
$posDelta -= $indentationLen;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if ($separator === '') {
|
|
67
|
+
// Insert newline as separator
|
|
68
|
+
$code = substr_replace($code, "\n", $separatorStart + $posDelta, 0);
|
|
69
|
+
$patches[] = [$separatorStart + $posDelta, 'remove', "\n"];
|
|
70
|
+
$posDelta += 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return $code;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
|
+
|
|
7
|
+
final class FnTokenEmulator extends KeywordEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_7_4;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public function getKeywordString(): string
|
|
15
|
+
{
|
|
16
|
+
return 'fn';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public function getKeywordToken(): int
|
|
20
|
+
{
|
|
21
|
+
return \T_FN;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -2,38 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
abstract class KeywordEmulator extends TokenEmulator
|
|
6
|
+
{
|
|
7
|
+
abstract function getKeywordString(): string;
|
|
8
|
+
abstract function getKeywordToken(): int;
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
abstract public function getKeywordToken(): int;
|
|
10
|
-
|
|
11
|
-
public function isEmulationNeeded(string $code): bool {
|
|
10
|
+
public function isEmulationNeeded(string $code): bool
|
|
11
|
+
{
|
|
12
12
|
return strpos(strtolower($code), $this->getKeywordString()) !== false;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
protected function isKeywordContext(array $tokens, int $pos): bool
|
|
16
|
+
{
|
|
17
17
|
$previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $pos);
|
|
18
|
-
return $previousNonSpaceToken === null || $previousNonSpaceToken
|
|
18
|
+
return $previousNonSpaceToken === null || $previousNonSpaceToken[0] !== \T_OBJECT_OPERATOR;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
public function emulate(string $code, array $tokens): array
|
|
21
|
+
public function emulate(string $code, array $tokens): array
|
|
22
|
+
{
|
|
22
23
|
$keywordString = $this->getKeywordString();
|
|
23
24
|
foreach ($tokens as $i => $token) {
|
|
24
|
-
if ($token
|
|
25
|
+
if ($token[0] === T_STRING && strtolower($token[1]) === $keywordString
|
|
25
26
|
&& $this->isKeywordContext($tokens, $i)) {
|
|
26
|
-
$
|
|
27
|
+
$tokens[$i][0] = $this->getKeywordToken();
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
return $tokens;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
/**
|
|
34
|
-
|
|
34
|
+
/**
|
|
35
|
+
* @param mixed[] $tokens
|
|
36
|
+
* @return array|string|null
|
|
37
|
+
*/
|
|
38
|
+
private function getPreviousNonSpaceToken(array $tokens, int $start)
|
|
39
|
+
{
|
|
35
40
|
for ($i = $start - 1; $i >= 0; --$i) {
|
|
36
|
-
if ($tokens[$i]
|
|
41
|
+
if ($tokens[$i][0] === T_WHITESPACE) {
|
|
37
42
|
continue;
|
|
38
43
|
}
|
|
39
44
|
|
|
@@ -43,11 +48,12 @@ abstract class KeywordEmulator extends TokenEmulator {
|
|
|
43
48
|
return null;
|
|
44
49
|
}
|
|
45
50
|
|
|
46
|
-
public function reverseEmulate(string $code, array $tokens): array
|
|
51
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
52
|
+
{
|
|
47
53
|
$keywordToken = $this->getKeywordToken();
|
|
48
|
-
foreach ($tokens as $token) {
|
|
49
|
-
if ($token
|
|
50
|
-
$
|
|
54
|
+
foreach ($tokens as $i => $token) {
|
|
55
|
+
if ($token[0] === $keywordToken) {
|
|
56
|
+
$tokens[$i][0] = \T_STRING;
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
59
|
|
|
@@ -2,18 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
6
|
|
|
7
|
-
final class MatchTokenEmulator extends KeywordEmulator
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
final class MatchTokenEmulator extends KeywordEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_8_0;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
public function getKeywordString(): string
|
|
14
|
+
public function getKeywordString(): string
|
|
15
|
+
{
|
|
13
16
|
return 'match';
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
public function getKeywordToken(): int
|
|
19
|
+
public function getKeywordToken(): int
|
|
20
|
+
{
|
|
17
21
|
return \T_MATCH;
|
|
18
22
|
}
|
|
19
23
|
}
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
CHANGED
|
@@ -2,58 +2,65 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
6
|
-
use PhpParser\Token;
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
7
6
|
|
|
8
|
-
final class NullsafeTokenEmulator extends TokenEmulator
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
final class NullsafeTokenEmulator extends TokenEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_8_0;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
public function isEmulationNeeded(string $code): bool
|
|
14
|
+
public function isEmulationNeeded(string $code): bool
|
|
15
|
+
{
|
|
14
16
|
return strpos($code, '?->') !== false;
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
public function emulate(string $code, array $tokens): array
|
|
19
|
+
public function emulate(string $code, array $tokens): array
|
|
20
|
+
{
|
|
18
21
|
// We need to manually iterate and manage a count because we'll change
|
|
19
22
|
// the tokens array on the way
|
|
23
|
+
$line = 1;
|
|
20
24
|
for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
|
|
21
|
-
$
|
|
22
|
-
if ($token->text === '?' && isset($tokens[$i + 1]) && $tokens[$i + 1]->id === \T_OBJECT_OPERATOR) {
|
|
25
|
+
if ($tokens[$i] === '?' && isset($tokens[$i + 1]) && $tokens[$i + 1][0] === \T_OBJECT_OPERATOR) {
|
|
23
26
|
array_splice($tokens, $i, 2, [
|
|
24
|
-
|
|
27
|
+
[\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line]
|
|
25
28
|
]);
|
|
26
29
|
$c--;
|
|
27
30
|
continue;
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
// Handle ?-> inside encapsed string.
|
|
31
|
-
if ($
|
|
32
|
-
&& $tokens[$i - 1]
|
|
33
|
-
&& preg_match('/^\?->([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)/', $
|
|
34
|
+
if ($tokens[$i][0] === \T_ENCAPSED_AND_WHITESPACE && isset($tokens[$i - 1])
|
|
35
|
+
&& $tokens[$i - 1][0] === \T_VARIABLE
|
|
36
|
+
&& preg_match('/^\?->([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)/', $tokens[$i][1], $matches)
|
|
34
37
|
) {
|
|
35
38
|
$replacement = [
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
[\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line],
|
|
40
|
+
[\T_STRING, $matches[1], $line],
|
|
38
41
|
];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
$replacement[] = new Token(
|
|
42
|
+
if (\strlen($matches[0]) !== \strlen($tokens[$i][1])) {
|
|
43
|
+
$replacement[] = [
|
|
42
44
|
\T_ENCAPSED_AND_WHITESPACE,
|
|
43
|
-
\substr($
|
|
44
|
-
$
|
|
45
|
-
|
|
45
|
+
\substr($tokens[$i][1], \strlen($matches[0])),
|
|
46
|
+
$line
|
|
47
|
+
];
|
|
46
48
|
}
|
|
47
49
|
array_splice($tokens, $i, 1, $replacement);
|
|
48
50
|
$c += \count($replacement) - 1;
|
|
49
51
|
continue;
|
|
50
52
|
}
|
|
53
|
+
|
|
54
|
+
if (\is_array($tokens[$i])) {
|
|
55
|
+
$line += substr_count($tokens[$i][1], "\n");
|
|
56
|
+
}
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
return $tokens;
|
|
54
60
|
}
|
|
55
61
|
|
|
56
|
-
public function reverseEmulate(string $code, array $tokens): array
|
|
62
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
63
|
+
{
|
|
57
64
|
// ?-> was not valid code previously, don't bother.
|
|
58
65
|
return $tokens;
|
|
59
66
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
|
+
|
|
7
|
+
final class NumericLiteralSeparatorEmulator extends TokenEmulator
|
|
8
|
+
{
|
|
9
|
+
const BIN = '(?:0b[01]+(?:_[01]+)*)';
|
|
10
|
+
const HEX = '(?:0x[0-9a-f]+(?:_[0-9a-f]+)*)';
|
|
11
|
+
const DEC = '(?:[0-9]+(?:_[0-9]+)*)';
|
|
12
|
+
const SIMPLE_FLOAT = '(?:' . self::DEC . '\.' . self::DEC . '?|\.' . self::DEC . ')';
|
|
13
|
+
const EXP = '(?:e[+-]?' . self::DEC . ')';
|
|
14
|
+
const FLOAT = '(?:' . self::SIMPLE_FLOAT . self::EXP . '?|' . self::DEC . self::EXP . ')';
|
|
15
|
+
const NUMBER = '~' . self::FLOAT . '|' . self::BIN . '|' . self::HEX . '|' . self::DEC . '~iA';
|
|
16
|
+
|
|
17
|
+
public function getPhpVersion(): string
|
|
18
|
+
{
|
|
19
|
+
return Emulative::PHP_7_4;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public function isEmulationNeeded(string $code) : bool
|
|
23
|
+
{
|
|
24
|
+
return preg_match('~[0-9]_[0-9]~', $code)
|
|
25
|
+
|| preg_match('~0x[0-9a-f]+_[0-9a-f]~i', $code);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public function emulate(string $code, array $tokens): array
|
|
29
|
+
{
|
|
30
|
+
// We need to manually iterate and manage a count because we'll change
|
|
31
|
+
// the tokens array on the way
|
|
32
|
+
$codeOffset = 0;
|
|
33
|
+
for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
|
|
34
|
+
$token = $tokens[$i];
|
|
35
|
+
$tokenLen = \strlen(\is_array($token) ? $token[1] : $token);
|
|
36
|
+
|
|
37
|
+
if ($token[0] !== T_LNUMBER && $token[0] !== T_DNUMBER) {
|
|
38
|
+
$codeOffset += $tokenLen;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
$res = preg_match(self::NUMBER, $code, $matches, 0, $codeOffset);
|
|
43
|
+
assert($res, "No number at number token position");
|
|
44
|
+
|
|
45
|
+
$match = $matches[0];
|
|
46
|
+
$matchLen = \strlen($match);
|
|
47
|
+
if ($matchLen === $tokenLen) {
|
|
48
|
+
// Original token already holds the full number.
|
|
49
|
+
$codeOffset += $tokenLen;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
$tokenKind = $this->resolveIntegerOrFloatToken($match);
|
|
54
|
+
$newTokens = [[$tokenKind, $match, $token[2]]];
|
|
55
|
+
|
|
56
|
+
$numTokens = 1;
|
|
57
|
+
$len = $tokenLen;
|
|
58
|
+
while ($matchLen > $len) {
|
|
59
|
+
$nextToken = $tokens[$i + $numTokens];
|
|
60
|
+
$nextTokenText = \is_array($nextToken) ? $nextToken[1] : $nextToken;
|
|
61
|
+
$nextTokenLen = \strlen($nextTokenText);
|
|
62
|
+
|
|
63
|
+
$numTokens++;
|
|
64
|
+
if ($matchLen < $len + $nextTokenLen) {
|
|
65
|
+
// Split trailing characters into a partial token.
|
|
66
|
+
assert(is_array($nextToken), "Partial token should be an array token");
|
|
67
|
+
$partialText = substr($nextTokenText, $matchLen - $len);
|
|
68
|
+
$newTokens[] = [$nextToken[0], $partialText, $nextToken[2]];
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
$len += $nextTokenLen;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
array_splice($tokens, $i, $numTokens, $newTokens);
|
|
76
|
+
$c -= $numTokens - \count($newTokens);
|
|
77
|
+
$codeOffset += $matchLen;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return $tokens;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private function resolveIntegerOrFloatToken(string $str): int
|
|
84
|
+
{
|
|
85
|
+
$str = str_replace('_', '', $str);
|
|
86
|
+
|
|
87
|
+
if (stripos($str, '0b') === 0) {
|
|
88
|
+
$num = bindec($str);
|
|
89
|
+
} elseif (stripos($str, '0x') === 0) {
|
|
90
|
+
$num = hexdec($str);
|
|
91
|
+
} elseif (stripos($str, '0') === 0 && ctype_digit($str)) {
|
|
92
|
+
$num = octdec($str);
|
|
93
|
+
} else {
|
|
94
|
+
$num = +$str;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return is_float($num) ? T_DNUMBER : T_LNUMBER;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public function reverseEmulate(string $code, array $tokens): array
|
|
101
|
+
{
|
|
102
|
+
// Numeric separators were not legal code previously, don't bother.
|
|
103
|
+
return $tokens;
|
|
104
|
+
}
|
|
105
|
+
}
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
6
|
|
|
7
7
|
/*
|
|
8
8
|
* In PHP 8.1, "readonly(" was special cased in the lexer in order to support functions with
|
|
@@ -20,8 +20,8 @@ class ReadonlyFunctionTokenEmulator extends KeywordEmulator {
|
|
|
20
20
|
return \T_READONLY;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
public function getPhpVersion():
|
|
24
|
-
return
|
|
23
|
+
public function getPhpVersion(): string {
|
|
24
|
+
return Emulative::PHP_8_2;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public function reverseEmulate(string $code, array $tokens): array {
|
package/plugins/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php
CHANGED
|
@@ -2,30 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
4
4
|
|
|
5
|
-
use PhpParser\
|
|
5
|
+
use PhpParser\Lexer\Emulative;
|
|
6
6
|
|
|
7
|
-
final class ReadonlyTokenEmulator extends KeywordEmulator
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
final class ReadonlyTokenEmulator extends KeywordEmulator
|
|
8
|
+
{
|
|
9
|
+
public function getPhpVersion(): string
|
|
10
|
+
{
|
|
11
|
+
return Emulative::PHP_8_1;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
public function getKeywordString(): string
|
|
14
|
+
public function getKeywordString(): string
|
|
15
|
+
{
|
|
13
16
|
return 'readonly';
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
public function getKeywordToken(): int
|
|
19
|
+
public function getKeywordToken(): int
|
|
20
|
+
{
|
|
17
21
|
return \T_READONLY;
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
protected function isKeywordContext(array $tokens, int $pos): bool
|
|
24
|
+
protected function isKeywordContext(array $tokens, int $pos): bool
|
|
25
|
+
{
|
|
21
26
|
if (!parent::isKeywordContext($tokens, $pos)) {
|
|
22
27
|
return false;
|
|
23
28
|
}
|
|
24
29
|
// Support "function readonly("
|
|
25
30
|
return !(isset($tokens[$pos + 1]) &&
|
|
26
|
-
($tokens[$pos + 1]
|
|
27
|
-
($tokens[$pos + 1]
|
|
31
|
+
($tokens[$pos + 1][0] === '(' ||
|
|
32
|
+
($tokens[$pos + 1][0] === \T_WHITESPACE &&
|
|
28
33
|
isset($tokens[$pos + 2]) &&
|
|
29
|
-
$tokens[$pos + 2]
|
|
34
|
+
$tokens[$pos + 2][0] === '(')));
|
|
30
35
|
}
|
|
31
36
|
}
|