@appthreat/atom 1.8.1 → 1.8.2
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.2-classpath.jar +0 -0
- package/plugins/lib/{io.appthreat.atom-1.8.1.jar → io.appthreat.atom-1.8.2.jar} +0 -0
- package/plugins/lib/{io.appthreat.c2cpg_3-1.1.3.jar → io.appthreat.c2cpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.dataflowengineoss_3-1.1.3.jar → io.appthreat.dataflowengineoss_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.javasrc2cpg_3-1.1.3.jar → io.appthreat.javasrc2cpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.jimple2cpg_3-1.1.3.jar → io.appthreat.jimple2cpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.jssrc2cpg_3-1.1.3.jar → io.appthreat.jssrc2cpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.php2atom_3-1.1.3.jar → io.appthreat.php2atom_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.pysrc2cpg_3-1.1.3.jar → io.appthreat.pysrc2cpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.semanticcpg_3-1.1.3.jar → io.appthreat.semanticcpg_3-1.1.4.jar} +0 -0
- package/plugins/lib/{io.appthreat.x2cpg_3-1.1.3.jar → io.appthreat.x2cpg_3-1.1.4.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/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
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
<?php
|
|
1
|
+
<?php
|
|
2
2
|
|
|
3
3
|
namespace PhpParser;
|
|
4
4
|
|
|
5
|
+
use function array_merge;
|
|
5
6
|
use PhpParser\Node\Expr;
|
|
6
7
|
use PhpParser\Node\Scalar;
|
|
7
8
|
|
|
8
|
-
use function array_merge;
|
|
9
|
-
|
|
10
9
|
/**
|
|
11
10
|
* Evaluates constant expressions.
|
|
12
11
|
*
|
|
@@ -26,8 +25,8 @@ use function array_merge;
|
|
|
26
25
|
* point to string conversions are affected by the precision ini setting. Secondly, they are also
|
|
27
26
|
* affected by the LC_NUMERIC locale.
|
|
28
27
|
*/
|
|
29
|
-
class ConstExprEvaluator
|
|
30
|
-
|
|
28
|
+
class ConstExprEvaluator
|
|
29
|
+
{
|
|
31
30
|
private $fallbackEvaluator;
|
|
32
31
|
|
|
33
32
|
/**
|
|
@@ -38,8 +37,8 @@ class ConstExprEvaluator {
|
|
|
38
37
|
*
|
|
39
38
|
* @param callable|null $fallbackEvaluator To call if subexpression cannot be evaluated
|
|
40
39
|
*/
|
|
41
|
-
public function __construct(
|
|
42
|
-
$this->fallbackEvaluator = $fallbackEvaluator ?? function
|
|
40
|
+
public function __construct(callable $fallbackEvaluator = null) {
|
|
41
|
+
$this->fallbackEvaluator = $fallbackEvaluator ?? function(Expr $expr) {
|
|
43
42
|
throw new ConstExprEvaluationException(
|
|
44
43
|
"Expression of type {$expr->getType()} cannot be evaluated"
|
|
45
44
|
);
|
|
@@ -64,7 +63,7 @@ class ConstExprEvaluator {
|
|
|
64
63
|
* @throws ConstExprEvaluationException if the expression cannot be evaluated or an error occurred
|
|
65
64
|
*/
|
|
66
65
|
public function evaluateSilently(Expr $expr) {
|
|
67
|
-
set_error_handler(function
|
|
66
|
+
set_error_handler(function($num, $str, $file, $line) {
|
|
68
67
|
throw new \ErrorException($str, 0, $num, $file, $line);
|
|
69
68
|
});
|
|
70
69
|
|
|
@@ -102,10 +101,9 @@ class ConstExprEvaluator {
|
|
|
102
101
|
return $this->evaluate($expr);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
/** @return mixed */
|
|
106
104
|
private function evaluate(Expr $expr) {
|
|
107
|
-
if ($expr instanceof Scalar\
|
|
108
|
-
|| $expr instanceof Scalar\
|
|
105
|
+
if ($expr instanceof Scalar\LNumber
|
|
106
|
+
|| $expr instanceof Scalar\DNumber
|
|
109
107
|
|| $expr instanceof Scalar\String_
|
|
110
108
|
) {
|
|
111
109
|
return $expr->value;
|
|
@@ -148,7 +146,7 @@ class ConstExprEvaluator {
|
|
|
148
146
|
return ($this->fallbackEvaluator)($expr);
|
|
149
147
|
}
|
|
150
148
|
|
|
151
|
-
private function evaluateArray(Expr\Array_ $expr)
|
|
149
|
+
private function evaluateArray(Expr\Array_ $expr) {
|
|
152
150
|
$array = [];
|
|
153
151
|
foreach ($expr->items as $item) {
|
|
154
152
|
if (null !== $item->key) {
|
|
@@ -162,7 +160,6 @@ class ConstExprEvaluator {
|
|
|
162
160
|
return $array;
|
|
163
161
|
}
|
|
164
162
|
|
|
165
|
-
/** @return mixed */
|
|
166
163
|
private function evaluateTernary(Expr\Ternary $expr) {
|
|
167
164
|
if (null === $expr->if) {
|
|
168
165
|
return $this->evaluate($expr->cond) ?: $this->evaluate($expr->else);
|
|
@@ -173,7 +170,6 @@ class ConstExprEvaluator {
|
|
|
173
170
|
: $this->evaluate($expr->else);
|
|
174
171
|
}
|
|
175
172
|
|
|
176
|
-
/** @return mixed */
|
|
177
173
|
private function evaluateBinaryOp(Expr\BinaryOp $expr) {
|
|
178
174
|
if ($expr instanceof Expr\BinaryOp\Coalesce
|
|
179
175
|
&& $expr->left instanceof Expr\ArrayDimFetch
|
|
@@ -220,7 +216,6 @@ class ConstExprEvaluator {
|
|
|
220
216
|
throw new \Exception('Should not happen');
|
|
221
217
|
}
|
|
222
218
|
|
|
223
|
-
/** @return mixed */
|
|
224
219
|
private function evaluateConstFetch(Expr\ConstFetch $expr) {
|
|
225
220
|
$name = $expr->name->toLowerString();
|
|
226
221
|
switch ($name) {
|
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser;
|
|
4
4
|
|
|
5
|
-
class Error extends \RuntimeException
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
protected
|
|
5
|
+
class Error extends \RuntimeException
|
|
6
|
+
{
|
|
7
|
+
protected $rawMessage;
|
|
8
|
+
protected $attributes;
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Creates an Exception signifying a parse error.
|
|
12
12
|
*
|
|
13
|
-
* @param string
|
|
14
|
-
* @param array
|
|
13
|
+
* @param string $message Error message
|
|
14
|
+
* @param array|int $attributes Attributes of node/token where error occurred
|
|
15
|
+
* (or start line of error -- deprecated)
|
|
15
16
|
*/
|
|
16
|
-
public function __construct(string $message,
|
|
17
|
+
public function __construct(string $message, $attributes = []) {
|
|
17
18
|
$this->rawMessage = $message;
|
|
18
|
-
$
|
|
19
|
+
if (is_array($attributes)) {
|
|
20
|
+
$this->attributes = $attributes;
|
|
21
|
+
} else {
|
|
22
|
+
$this->attributes = ['startLine' => $attributes];
|
|
23
|
+
}
|
|
19
24
|
$this->updateMessage();
|
|
20
25
|
}
|
|
21
26
|
|
|
@@ -24,7 +29,7 @@ class Error extends \RuntimeException {
|
|
|
24
29
|
*
|
|
25
30
|
* @return string Error message
|
|
26
31
|
*/
|
|
27
|
-
public function getRawMessage(): string {
|
|
32
|
+
public function getRawMessage() : string {
|
|
28
33
|
return $this->rawMessage;
|
|
29
34
|
}
|
|
30
35
|
|
|
@@ -33,7 +38,7 @@ class Error extends \RuntimeException {
|
|
|
33
38
|
*
|
|
34
39
|
* @return int Error start line
|
|
35
40
|
*/
|
|
36
|
-
public function getStartLine(): int {
|
|
41
|
+
public function getStartLine() : int {
|
|
37
42
|
return $this->attributes['startLine'] ?? -1;
|
|
38
43
|
}
|
|
39
44
|
|
|
@@ -42,25 +47,25 @@ class Error extends \RuntimeException {
|
|
|
42
47
|
*
|
|
43
48
|
* @return int Error end line
|
|
44
49
|
*/
|
|
45
|
-
public function getEndLine(): int {
|
|
50
|
+
public function getEndLine() : int {
|
|
46
51
|
return $this->attributes['endLine'] ?? -1;
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
/**
|
|
50
55
|
* Gets the attributes of the node/token the error occurred at.
|
|
51
56
|
*
|
|
52
|
-
* @return array
|
|
57
|
+
* @return array
|
|
53
58
|
*/
|
|
54
|
-
public function getAttributes(): array {
|
|
59
|
+
public function getAttributes() : array {
|
|
55
60
|
return $this->attributes;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
/**
|
|
59
64
|
* Sets the attributes of the node/token the error occurred at.
|
|
60
65
|
*
|
|
61
|
-
* @param array
|
|
66
|
+
* @param array $attributes
|
|
62
67
|
*/
|
|
63
|
-
public function setAttributes(array $attributes)
|
|
68
|
+
public function setAttributes(array $attributes) {
|
|
64
69
|
$this->attributes = $attributes;
|
|
65
70
|
$this->updateMessage();
|
|
66
71
|
}
|
|
@@ -70,7 +75,7 @@ class Error extends \RuntimeException {
|
|
|
70
75
|
*
|
|
71
76
|
* @param string $message Error message
|
|
72
77
|
*/
|
|
73
|
-
public function setRawMessage(string $message)
|
|
78
|
+
public function setRawMessage(string $message) {
|
|
74
79
|
$this->rawMessage = $message;
|
|
75
80
|
$this->updateMessage();
|
|
76
81
|
}
|
|
@@ -80,7 +85,7 @@ class Error extends \RuntimeException {
|
|
|
80
85
|
*
|
|
81
86
|
* @param int $line Error start line
|
|
82
87
|
*/
|
|
83
|
-
public function setStartLine(int $line)
|
|
88
|
+
public function setStartLine(int $line) {
|
|
84
89
|
$this->attributes['startLine'] = $line;
|
|
85
90
|
$this->updateMessage();
|
|
86
91
|
}
|
|
@@ -89,8 +94,10 @@ class Error extends \RuntimeException {
|
|
|
89
94
|
* Returns whether the error has start and end column information.
|
|
90
95
|
*
|
|
91
96
|
* For column information enable the startFilePos and endFilePos in the lexer options.
|
|
97
|
+
*
|
|
98
|
+
* @return bool
|
|
92
99
|
*/
|
|
93
|
-
public function hasColumnInfo(): bool {
|
|
100
|
+
public function hasColumnInfo() : bool {
|
|
94
101
|
return isset($this->attributes['startFilePos'], $this->attributes['endFilePos']);
|
|
95
102
|
}
|
|
96
103
|
|
|
@@ -98,8 +105,9 @@ class Error extends \RuntimeException {
|
|
|
98
105
|
* Gets the start column (1-based) into the line where the error started.
|
|
99
106
|
*
|
|
100
107
|
* @param string $code Source code of the file
|
|
108
|
+
* @return int
|
|
101
109
|
*/
|
|
102
|
-
public function getStartColumn(string $code): int {
|
|
110
|
+
public function getStartColumn(string $code) : int {
|
|
103
111
|
if (!$this->hasColumnInfo()) {
|
|
104
112
|
throw new \RuntimeException('Error does not have column information');
|
|
105
113
|
}
|
|
@@ -111,8 +119,9 @@ class Error extends \RuntimeException {
|
|
|
111
119
|
* Gets the end column (1-based) into the line where the error ended.
|
|
112
120
|
*
|
|
113
121
|
* @param string $code Source code of the file
|
|
122
|
+
* @return int
|
|
114
123
|
*/
|
|
115
|
-
public function getEndColumn(string $code): int {
|
|
124
|
+
public function getEndColumn(string $code) : int {
|
|
116
125
|
if (!$this->hasColumnInfo()) {
|
|
117
126
|
throw new \RuntimeException('Error does not have column information');
|
|
118
127
|
}
|
|
@@ -127,7 +136,7 @@ class Error extends \RuntimeException {
|
|
|
127
136
|
*
|
|
128
137
|
* @return string Formatted message
|
|
129
138
|
*/
|
|
130
|
-
public function getMessageWithColumnInfo(string $code): string {
|
|
139
|
+
public function getMessageWithColumnInfo(string $code) : string {
|
|
131
140
|
return sprintf(
|
|
132
141
|
'%s from %d:%d to %d:%d', $this->getRawMessage(),
|
|
133
142
|
$this->getStartLine(), $this->getStartColumn($code),
|
|
@@ -139,11 +148,11 @@ class Error extends \RuntimeException {
|
|
|
139
148
|
* Converts a file offset into a column.
|
|
140
149
|
*
|
|
141
150
|
* @param string $code Source code that $pos indexes into
|
|
142
|
-
* @param int
|
|
151
|
+
* @param int $pos 0-based position in $code
|
|
143
152
|
*
|
|
144
153
|
* @return int 1-based column (relative to start of line)
|
|
145
154
|
*/
|
|
146
|
-
private function toColumn(string $code, int $pos): int {
|
|
155
|
+
private function toColumn(string $code, int $pos) : int {
|
|
147
156
|
if ($pos > strlen($code)) {
|
|
148
157
|
throw new \RuntimeException('Invalid position information');
|
|
149
158
|
}
|
|
@@ -159,7 +168,7 @@ class Error extends \RuntimeException {
|
|
|
159
168
|
/**
|
|
160
169
|
* Updates the exception message after a change to rawMessage or rawLine.
|
|
161
170
|
*/
|
|
162
|
-
protected function updateMessage()
|
|
171
|
+
protected function updateMessage() {
|
|
163
172
|
$this->message = $this->rawMessage;
|
|
164
173
|
|
|
165
174
|
if (-1 === $this->getStartLine()) {
|
|
@@ -10,11 +10,12 @@ use PhpParser\ErrorHandler;
|
|
|
10
10
|
*
|
|
11
11
|
* This allows graceful handling of errors.
|
|
12
12
|
*/
|
|
13
|
-
class Collecting implements ErrorHandler
|
|
13
|
+
class Collecting implements ErrorHandler
|
|
14
|
+
{
|
|
14
15
|
/** @var Error[] Collected errors */
|
|
15
|
-
private
|
|
16
|
+
private $errors = [];
|
|
16
17
|
|
|
17
|
-
public function handleError(Error $error)
|
|
18
|
+
public function handleError(Error $error) {
|
|
18
19
|
$this->errors[] = $error;
|
|
19
20
|
}
|
|
20
21
|
|
|
@@ -23,21 +24,23 @@ class Collecting implements ErrorHandler {
|
|
|
23
24
|
*
|
|
24
25
|
* @return Error[]
|
|
25
26
|
*/
|
|
26
|
-
public function getErrors(): array {
|
|
27
|
+
public function getErrors() : array {
|
|
27
28
|
return $this->errors;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Check whether there are any errors.
|
|
33
|
+
*
|
|
34
|
+
* @return bool
|
|
32
35
|
*/
|
|
33
|
-
public function hasErrors(): bool {
|
|
36
|
+
public function hasErrors() : bool {
|
|
34
37
|
return !empty($this->errors);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
41
|
* Reset/clear collected errors.
|
|
39
42
|
*/
|
|
40
|
-
public function clearErrors()
|
|
43
|
+
public function clearErrors() {
|
|
41
44
|
$this->errors = [];
|
|
42
45
|
}
|
|
43
46
|
}
|
|
@@ -10,8 +10,9 @@ use PhpParser\ErrorHandler;
|
|
|
10
10
|
*
|
|
11
11
|
* This is the default strategy used by all components.
|
|
12
12
|
*/
|
|
13
|
-
class Throwing implements ErrorHandler
|
|
14
|
-
|
|
13
|
+
class Throwing implements ErrorHandler
|
|
14
|
+
{
|
|
15
|
+
public function handleError(Error $error) {
|
|
15
16
|
throw $error;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
namespace PhpParser;
|
|
4
4
|
|
|
5
|
-
interface ErrorHandler
|
|
5
|
+
interface ErrorHandler
|
|
6
|
+
{
|
|
6
7
|
/**
|
|
7
8
|
* Handle an error generated during lexing, parsing or some other operation.
|
|
8
9
|
*
|
|
9
10
|
* @param Error $error The error that needs to be handled
|
|
10
11
|
*/
|
|
11
|
-
public function handleError(Error $error)
|
|
12
|
+
public function handleError(Error $error);
|
|
12
13
|
}
|
|
@@ -5,24 +5,20 @@ namespace PhpParser\Internal;
|
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
class DiffElem
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
class DiffElem
|
|
9
|
+
{
|
|
10
|
+
const TYPE_KEEP = 0;
|
|
11
|
+
const TYPE_REMOVE = 1;
|
|
12
|
+
const TYPE_ADD = 2;
|
|
13
|
+
const TYPE_REPLACE = 3;
|
|
13
14
|
|
|
14
15
|
/** @var int One of the TYPE_* constants */
|
|
15
|
-
public
|
|
16
|
+
public $type;
|
|
16
17
|
/** @var mixed Is null for add operations */
|
|
17
18
|
public $old;
|
|
18
19
|
/** @var mixed Is null for remove operations */
|
|
19
20
|
public $new;
|
|
20
21
|
|
|
21
|
-
/**
|
|
22
|
-
* @param int $type One of the TYPE_* constants
|
|
23
|
-
* @param mixed $old Is null for add operations
|
|
24
|
-
* @param mixed $new Is null for remove operations
|
|
25
|
-
*/
|
|
26
22
|
public function __construct(int $type, $old, $new) {
|
|
27
23
|
$this->type = $type;
|
|
28
24
|
$this->old = $old;
|
|
@@ -8,17 +8,16 @@ namespace PhpParser\Internal;
|
|
|
8
8
|
* Myers, Eugene W. "An O (ND) difference algorithm and its variations."
|
|
9
9
|
* Algorithmica 1.1 (1986): 251-266.
|
|
10
10
|
*
|
|
11
|
-
* @template T
|
|
12
11
|
* @internal
|
|
13
12
|
*/
|
|
14
|
-
class Differ
|
|
15
|
-
|
|
13
|
+
class Differ
|
|
14
|
+
{
|
|
16
15
|
private $isEqual;
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* Create differ over the given equality relation.
|
|
20
19
|
*
|
|
21
|
-
* @param callable(
|
|
20
|
+
* @param callable $isEqual Equality relation with signature function($a, $b) : bool
|
|
22
21
|
*/
|
|
23
22
|
public function __construct(callable $isEqual) {
|
|
24
23
|
$this->isEqual = $isEqual;
|
|
@@ -27,14 +26,12 @@ class Differ {
|
|
|
27
26
|
/**
|
|
28
27
|
* Calculate diff (edit script) from $old to $new.
|
|
29
28
|
*
|
|
30
|
-
* @param
|
|
31
|
-
* @param
|
|
29
|
+
* @param array $old Original array
|
|
30
|
+
* @param array $new New array
|
|
32
31
|
*
|
|
33
32
|
* @return DiffElem[] Diff (edit script)
|
|
34
33
|
*/
|
|
35
|
-
public function diff(array $old, array $new)
|
|
36
|
-
$old = \array_values($old);
|
|
37
|
-
$new = \array_values($new);
|
|
34
|
+
public function diff(array $old, array $new) {
|
|
38
35
|
list($trace, $x, $y) = $this->calculateTrace($old, $new);
|
|
39
36
|
return $this->extractDiff($trace, $x, $y, $old, $new);
|
|
40
37
|
}
|
|
@@ -45,37 +42,32 @@ class Differ {
|
|
|
45
42
|
* If a sequence of remove operations is followed by the same number of add operations, these
|
|
46
43
|
* will be coalesced into replace operations.
|
|
47
44
|
*
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
45
|
+
* @param array $old Original array
|
|
46
|
+
* @param array $new New array
|
|
50
47
|
*
|
|
51
48
|
* @return DiffElem[] Diff (edit script), including replace operations
|
|
52
49
|
*/
|
|
53
|
-
public function diffWithReplacements(array $old, array $new)
|
|
50
|
+
public function diffWithReplacements(array $old, array $new) {
|
|
54
51
|
return $this->coalesceReplacements($this->diff($old, $new));
|
|
55
52
|
}
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
* @return array{array<int, array<int, int>>, int, int}
|
|
61
|
-
*/
|
|
62
|
-
private function calculateTrace(array $old, array $new): array {
|
|
63
|
-
$n = \count($old);
|
|
64
|
-
$m = \count($new);
|
|
54
|
+
private function calculateTrace(array $a, array $b) {
|
|
55
|
+
$n = \count($a);
|
|
56
|
+
$m = \count($b);
|
|
65
57
|
$max = $n + $m;
|
|
66
58
|
$v = [1 => 0];
|
|
67
59
|
$trace = [];
|
|
68
60
|
for ($d = 0; $d <= $max; $d++) {
|
|
69
61
|
$trace[] = $v;
|
|
70
62
|
for ($k = -$d; $k <= $d; $k += 2) {
|
|
71
|
-
if ($k === -$d || ($k !== $d && $v[$k
|
|
72
|
-
$x = $v[$k
|
|
63
|
+
if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
|
|
64
|
+
$x = $v[$k+1];
|
|
73
65
|
} else {
|
|
74
|
-
$x = $v[$k
|
|
66
|
+
$x = $v[$k-1] + 1;
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
$y = $x - $k;
|
|
78
|
-
while ($x < $n && $y < $m && ($this->isEqual)($
|
|
70
|
+
while ($x < $n && $y < $m && ($this->isEqual)($a[$x], $b[$y])) {
|
|
79
71
|
$x++;
|
|
80
72
|
$y++;
|
|
81
73
|
}
|
|
@@ -89,19 +81,13 @@ class Differ {
|
|
|
89
81
|
throw new \Exception('Should not happen');
|
|
90
82
|
}
|
|
91
83
|
|
|
92
|
-
|
|
93
|
-
* @param array<int, array<int, int>> $trace
|
|
94
|
-
* @param T[] $old
|
|
95
|
-
* @param T[] $new
|
|
96
|
-
* @return DiffElem[]
|
|
97
|
-
*/
|
|
98
|
-
private function extractDiff(array $trace, int $x, int $y, array $old, array $new): array {
|
|
84
|
+
private function extractDiff(array $trace, int $x, int $y, array $a, array $b) {
|
|
99
85
|
$result = [];
|
|
100
86
|
for ($d = \count($trace) - 1; $d >= 0; $d--) {
|
|
101
87
|
$v = $trace[$d];
|
|
102
88
|
$k = $x - $y;
|
|
103
89
|
|
|
104
|
-
if ($k === -$d || ($k !== $d && $v[$k
|
|
90
|
+
if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
|
|
105
91
|
$prevK = $k + 1;
|
|
106
92
|
} else {
|
|
107
93
|
$prevK = $k - 1;
|
|
@@ -111,7 +97,7 @@ class Differ {
|
|
|
111
97
|
$prevY = $prevX - $prevK;
|
|
112
98
|
|
|
113
99
|
while ($x > $prevX && $y > $prevY) {
|
|
114
|
-
$result[] = new DiffElem(DiffElem::TYPE_KEEP, $
|
|
100
|
+
$result[] = new DiffElem(DiffElem::TYPE_KEEP, $a[$x-1], $b[$y-1]);
|
|
115
101
|
$x--;
|
|
116
102
|
$y--;
|
|
117
103
|
}
|
|
@@ -121,12 +107,12 @@ class Differ {
|
|
|
121
107
|
}
|
|
122
108
|
|
|
123
109
|
while ($x > $prevX) {
|
|
124
|
-
$result[] = new DiffElem(DiffElem::TYPE_REMOVE, $
|
|
110
|
+
$result[] = new DiffElem(DiffElem::TYPE_REMOVE, $a[$x-1], null);
|
|
125
111
|
$x--;
|
|
126
112
|
}
|
|
127
113
|
|
|
128
114
|
while ($y > $prevY) {
|
|
129
|
-
$result[] = new DiffElem(DiffElem::TYPE_ADD, null, $
|
|
115
|
+
$result[] = new DiffElem(DiffElem::TYPE_ADD, null, $b[$y-1]);
|
|
130
116
|
$y--;
|
|
131
117
|
}
|
|
132
118
|
}
|
|
@@ -139,7 +125,7 @@ class Differ {
|
|
|
139
125
|
* @param DiffElem[] $diff
|
|
140
126
|
* @return DiffElem[]
|
|
141
127
|
*/
|
|
142
|
-
private function coalesceReplacements(array $diff)
|
|
128
|
+
private function coalesceReplacements(array $diff) {
|
|
143
129
|
$newDiff = [];
|
|
144
130
|
$c = \count($diff);
|
|
145
131
|
for ($i = 0; $i < $c; $i++) {
|
|
@@ -15,30 +15,23 @@ use PhpParser\Node\Expr;
|
|
|
15
15
|
*
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
|
-
class PrintableNewAnonClassNode extends Expr
|
|
18
|
+
class PrintableNewAnonClassNode extends Expr
|
|
19
|
+
{
|
|
19
20
|
/** @var Node\AttributeGroup[] PHP attribute groups */
|
|
20
|
-
public
|
|
21
|
+
public $attrGroups;
|
|
21
22
|
/** @var int Modifiers */
|
|
22
|
-
public
|
|
23
|
-
/** @var
|
|
24
|
-
public
|
|
23
|
+
public $flags;
|
|
24
|
+
/** @var Node\Arg[] Arguments */
|
|
25
|
+
public $args;
|
|
25
26
|
/** @var null|Node\Name Name of extended class */
|
|
26
|
-
public
|
|
27
|
+
public $extends;
|
|
27
28
|
/** @var Node\Name[] Names of implemented interfaces */
|
|
28
|
-
public
|
|
29
|
+
public $implements;
|
|
29
30
|
/** @var Node\Stmt[] Statements */
|
|
30
|
-
public
|
|
31
|
+
public $stmts;
|
|
31
32
|
|
|
32
|
-
/**
|
|
33
|
-
* @param Node\AttributeGroup[] $attrGroups PHP attribute groups
|
|
34
|
-
* @param (Node\Arg|Node\VariadicPlaceholder)[] $args Arguments
|
|
35
|
-
* @param Node\Name|null $extends Name of extended class
|
|
36
|
-
* @param Node\Name[] $implements Names of implemented interfaces
|
|
37
|
-
* @param Node\Stmt[] $stmts Statements
|
|
38
|
-
* @param array<string, mixed> $attributes Attributes
|
|
39
|
-
*/
|
|
40
33
|
public function __construct(
|
|
41
|
-
array $attrGroups, int $flags, array $args,
|
|
34
|
+
array $attrGroups, int $flags, array $args, Node\Name $extends = null, array $implements,
|
|
42
35
|
array $stmts, array $attributes
|
|
43
36
|
) {
|
|
44
37
|
parent::__construct($attributes);
|
|
@@ -50,7 +43,7 @@ class PrintableNewAnonClassNode extends Expr {
|
|
|
50
43
|
$this->stmts = $stmts;
|
|
51
44
|
}
|
|
52
45
|
|
|
53
|
-
public static function fromNewNode(Expr\New_ $newNode)
|
|
46
|
+
public static function fromNewNode(Expr\New_ $newNode) {
|
|
54
47
|
$class = $newNode->class;
|
|
55
48
|
assert($class instanceof Node\Stmt\Class_);
|
|
56
49
|
// We don't assert that $class->name is null here, to allow consumers to assign unique names
|
|
@@ -61,11 +54,11 @@ class PrintableNewAnonClassNode extends Expr {
|
|
|
61
54
|
);
|
|
62
55
|
}
|
|
63
56
|
|
|
64
|
-
public function getType(): string {
|
|
57
|
+
public function getType() : string {
|
|
65
58
|
return 'Expr_PrintableNewAnonClass';
|
|
66
59
|
}
|
|
67
60
|
|
|
68
|
-
public function getSubNodeNames(): array {
|
|
61
|
+
public function getSubNodeNames() : array {
|
|
69
62
|
return ['attrGroups', 'flags', 'args', 'extends', 'implements', 'stmts'];
|
|
70
63
|
}
|
|
71
64
|
}
|