Add single plugins

This commit is contained in:
Daniil Gentili 2020-09-01 14:31:23 +02:00
parent 434928f417
commit 0b1fff5936
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
30 changed files with 1224 additions and 32 deletions

View File

@ -93,7 +93,7 @@ class Context
} while ($argument instanceof ArrayDimFetch && $argument->var instanceof ArrayDimFetch);
if ($argument instanceof Variable && \is_string($argument->name)) {
$this->variables->top()->addVar($argument->name);
}
}
}
}
}

View File

@ -61,7 +61,7 @@ class IssetExpressionFixer extends Plugin
{
foreach ($isset->vars as $key => &$var) {
/** @var array<string, array<class-string<Expr>, true>> */
$subNodes = $this->getConfig(\get_class($var), false)
$subNodes = $this->getConfig(\get_class($var), false);
if (!$subNodes) {
continue;
}

View File

@ -23,7 +23,7 @@ use PhpParser\Node\Scalar\LNumber;
class NestedExpressionFixer extends Plugin
{
/**
* Recursively extract bottom ArrayDimFetch
* Recursively extract bottom ArrayDimFetch.
*
* @param Node $var
* @return Node
@ -100,11 +100,11 @@ class NestedExpressionFixer extends Plugin
}
/**
* Check if a is instance of b
* Check if a is instance of b.
*
* @param class-string|object $a
* @param class-string|object $b
*
*
* @return boolean
*/
public static function instanceOf($a, $b): bool

View File

@ -96,10 +96,10 @@ class ReGenerator implements \Iterator
}
/**
* Send value into generator
* Send value into generator.
*
* @param mixed $value Value
*
*
* @return mixed
*/
public function send($value)
@ -120,10 +120,10 @@ class ReGenerator implements \Iterator
return $value;
}
/**
* Throw value into generator
* Throw value into generator.
*
* @param \Throwable $throwable Excpeption
*
*
* @return mixed
*/
public function throw(\Throwable $throwable)
@ -145,7 +145,7 @@ class ReGenerator implements \Iterator
}
/**
* Get current value
* Get current value.
*
* @return mixed
*/
@ -155,7 +155,7 @@ class ReGenerator implements \Iterator
return $this->yieldValue;
}
/**
* Get current key
* Get current key.
*
* @return mixed
*/
@ -165,7 +165,7 @@ class ReGenerator implements \Iterator
return $this->yieldKey;
}
/**
* Advance generator
* Advance generator.
*
* @return void
*/
@ -174,7 +174,7 @@ class ReGenerator implements \Iterator
$this->send(null);
}
/**
* Rewind generator
* Rewind generator.
*
* @return void
*/
@ -195,7 +195,7 @@ class ReGenerator implements \Iterator
$this->start();
}
/**
* Check if generator is valid
* Check if generator is valid.
*
* @return boolean
*/

View File

@ -41,6 +41,5 @@ class ReGeneratorInternal extends Plugin
}
public function enterRoot(FunctionLike $func)
{
}
}

View File

@ -8,6 +8,8 @@ use Phabel\Target\Php70\ClosureCallReplacer;
use Phabel\Target\Php70\CompoundAccess;
use Phabel\Target\Php70\DefineArrayReplacer;
use Phabel\Target\Php70\GroupUseReplacer;
use Phabel\Target\Php70\IssetExpressionFixer;
use Phabel\Target\Php70\NestedExpressionFixer;
use Phabel\Target\Php70\NullCoalesceReplacer;
use Phabel\Target\Php70\ReservedNameReplacer;
use Phabel\Target\Php70\ScalarTypeHintsRemover;
@ -30,6 +32,8 @@ class Php70 extends Plugin
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
AnonymousClassReplacer::class,
ClosureCallReplacer::class,
CompoundAccess::class,

View File

@ -0,0 +1,299 @@
<?php
namespace Phabel\Target\Php70;
use Phabel\Plugin;
use Phabel\Plugin\IssetExpressionFixer as fixer;
class IssetExpressionFixer extends Plugin
{
/**
* Expression fixer for PHP 70.
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => [
'PhpParser\\Node\\Expr\\ArrayDimFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\Array_' => true,
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\ConstFetch' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\ClassConstFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
],
],
'PhpParser\\Node\\Expr\\PropertyFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\Array_' => true,
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\StaticPropertyFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
]
];
}
}

View File

@ -0,0 +1,562 @@
<?php
namespace Phabel\Target\Php70;
use Phabel\Plugin;
use Phabel\Plugin\NestedExpressionFixer as fixer;
class NestedExpressionFixer extends Plugin
{
/**
* Expression fixer for PHP 70.
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => [
'PhpParser\\Node\\Expr\\ArrayDimFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\ClassConstFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
],
],
'PhpParser\\Node\\Expr\\FuncCall' =>
[
'name' =>
[
'PhpParser\\Node\\Expr\\Array_' => true,
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\ConstFetch' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\MethodCall' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\Array_' => true,
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\PropertyFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\Array_' => true,
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\Print_' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\StaticCall' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
'PhpParser\\Node\\Expr\\StaticPropertyFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BitwiseNot' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\ClassConstFetch' => true,
'PhpParser\\Node\\Expr\\Clone_' => true,
'PhpParser\\Node\\Expr\\Closure' => true,
'PhpParser\\Node\\Expr\\ClosureUse' => true,
'PhpParser\\Node\\Expr\\Empty_' => true,
'PhpParser\\Node\\Expr\\ErrorSuppress' => true,
'PhpParser\\Node\\Expr\\Eval_' => true,
'PhpParser\\Node\\Expr\\FuncCall' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Isset_' => true,
'PhpParser\\Node\\Expr\\MethodCall' => true,
'PhpParser\\Node\\Expr\\New_' => true,
'PhpParser\\Node\\Expr\\PostDec' => true,
'PhpParser\\Node\\Expr\\PostInc' => true,
'PhpParser\\Node\\Expr\\PreDec' => true,
'PhpParser\\Node\\Expr\\PreInc' => true,
'PhpParser\\Node\\Expr\\PropertyFetch' => true,
'PhpParser\\Node\\Expr\\ShellExec' => true,
'PhpParser\\Node\\Expr\\StaticCall' => true,
'PhpParser\\Node\\Expr\\StaticPropertyFetch' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\UnaryMinus' => true,
'PhpParser\\Node\\Expr\\UnaryPlus' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\Cast\\Array_' => true,
'PhpParser\\Node\\Expr\\Cast\\Bool_' => true,
'PhpParser\\Node\\Expr\\Cast\\Double' => true,
'PhpParser\\Node\\Expr\\Cast\\Int_' => true,
'PhpParser\\Node\\Expr\\Cast\\Object_' => true,
'PhpParser\\Node\\Expr\\Cast\\String_' => true,
'PhpParser\\Node\\Expr\\Cast\\Unset_' => true,
'PhpParser\\Node\\Scalar\\Encapsed' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
]
];
}
}

View File

@ -5,9 +5,12 @@ namespace Phabel\Target;
use Phabel\Plugin;
use Phabel\Target\Php71\ArrayList;
use Phabel\Target\Php71\ClassConstantVisibilityModifiersRemover;
use Phabel\Target\Php71\IssetExpressionFixer;
use Phabel\Target\Php71\ListKey;
use Phabel\Target\Php71\MultipleCatchReplacer;
use Spatie\Php7to5\NodeVisitors\NullableTypeRemover;
use Phabel\Target\Php71\NestedExpressionFixer;
use Phabel\Target\Php71\NullableType;
use Phabel\Target\Php71\VoidReturnType;
/**
* Makes changes necessary to polyfill PHP 7.1 and run on PHP 7.0 and below.
@ -19,16 +22,19 @@ class Php71 extends Plugin
{
public static function composerRequires(): array
{
return ['symfony/polyfill-php70' => '*'];
return ['symfony/polyfill-php71' => '*'];
}
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
ArrayList::class,
ClassConstantVisibilityModifiersRemover::class,
ListKey::class,
MultipleCatchReplacer::class,
NullableTypeRemover::class
VoidReturnType::class,
NullableType::class
];
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php71;
use Phabel\Plugin;
class IssetExpressionFixer extends Plugin
{
}

View File

@ -86,7 +86,7 @@ class ListKey extends Plugin
return [new List_($newList), $keys];
}
/**
* Destructure array of arrays
* Destructure array of arrays.
*
* @param array $keys Custom keys
* @param array $array Array

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php71;
use Phabel\Plugin;
class NestedExpressionFixer extends Plugin
{
}

View File

@ -1,6 +1,6 @@
<?php
namespace Spatie\Php7to5\NodeVisitors;
namespace Phabel\Target\Php71;
use Phabel\Plugin;
use Phabel\Plugin\TypeHintStripper;

View File

@ -1,6 +1,6 @@
<?php
namespace Spatie\Php7to5\NodeVisitors;
namespace Phabel\Target\Php71;
use Phabel\Plugin;
use Phabel\Plugin\TypeHintStripper;

View File

@ -3,6 +3,8 @@
namespace Phabel\Target;
use Phabel\Plugin;
use Phabel\Target\Php72\IssetExpressionFixer;
use Phabel\Target\Php72\NestedExpressionFixer;
use Phabel\Target\Php72\ObjectTypeHintReplacer;
/**
@ -21,6 +23,8 @@ class Php72 extends Plugin
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
ObjectTypeHintReplacer::class
];
}

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php72;
use Phabel\Plugin;
class IssetExpressionFixer extends Plugin
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php72;
use Phabel\Plugin;
class NestedExpressionFixer extends Plugin
{
}

View File

@ -3,6 +3,8 @@
namespace Phabel\Target;
use Phabel\Plugin;
use Phabel\Target\Php73\IssetExpressionFixer;
use Phabel\Target\Php73\NestedExpressionFixer;
/**
* Makes changes necessary to polyfill PHP 7.3 and run on PHP 7.2 and below.
@ -14,6 +16,13 @@ class Php73 extends Plugin
{
public static function composerRequires(): array
{
return ['symfony/polyfill-php72' => '*'];
return ['symfony/polyfill-php73' => '*'];
}
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
];
}
}

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php73;
use Phabel\Plugin;
class IssetExpressionFixer extends Plugin
{
}

View File

@ -0,0 +1,39 @@
<?php
namespace Phabel\Target\Php73;
use Phabel\Plugin;
use Phabel\Plugin\NestedExpressionFixer as fixer;
class NestedExpressionFixer extends Plugin
{
/**
* Expression fixer for PHP 73.
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => [
'PhpParser\\Node\\Expr\\Instanceof_' =>
[
'expr' =>
[
'PhpParser\\Node\\Scalar\\DNumber' => true,
'PhpParser\\Node\\Scalar\\LNumber' => true,
'PhpParser\\Node\\Scalar\\String_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\File' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Line' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Method' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => true,
'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => true,
],
],
]
];
}
}

View File

@ -3,6 +3,12 @@
namespace Phabel\Target;
use Phabel\Plugin;
use Phabel\Target\Php74\ArrayUnpack;
use Phabel\Target\Php74\ArrowClosure;
use Phabel\Target\Php74\IssetExpressionFixer;
use Phabel\Target\Php74\NestedExpressionFixer;
use Phabel\Target\Php74\NullCoalesceAssignment;
use Phabel\Target\Php74\TypedProperty;
/**
* Makes changes necessary to polyfill PHP 7.4 and run on PHP 7.3 and below.
@ -14,6 +20,17 @@ class Php74 extends Plugin
{
public static function composerRequires(): array
{
return ['symfony/polyfill-php72' => '*'];
return ['symfony/polyfill-php74' => '*'];
}
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
ArrayUnpack::class,
ArrowClosure::class,
NullCoalesceAssignment::class,
TypedProperty::class
];
}
}

View File

@ -5,7 +5,6 @@ namespace Phabel\Target\Php74;
use Phabel\Plugin;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\FuncCall;
class ArrayUnpack extends Plugin

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php74;
use Phabel\Plugin;
class IssetExpressionFixer extends Plugin
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace Phabel\Target\Php74;
use Phabel\Plugin;
class NestedExpressionFixer extends Plugin
{
}

View File

@ -5,9 +5,8 @@ namespace Phabel\Target\Php74;
use Phabel\Plugin;
/**
*
*
*/
class TypedProperty extends Plugin
{
}

View File

@ -3,6 +3,8 @@
namespace Phabel\Target;
use Phabel\Plugin;
use Phabel\Target\Php80\IssetExpressionFixer;
use Phabel\Target\Php80\NestedExpressionFixer;
use Phabel\UnionTypeStripper;
/**
@ -21,6 +23,8 @@ class Php80 extends Plugin
public static function runWithAfter(): array
{
return [
IssetExpressionFixer::class,
NestedExpressionFixer::class,
UnionTypeStripper::class,
];
}

View File

@ -0,0 +1,36 @@
<?php
namespace Phabel\Target\Php80;
use Phabel\Plugin;
use Phabel\Plugin\IssetExpressionFixer as fixer;
class IssetExpressionFixer extends Plugin
{
/**
* Expression fixer for PHP 80.
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => [
'PhpParser\\Node\\Expr\\ClassConstFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Scalar\\Encapsed' => true,
],
],
'PhpParser\\Node\\Expr\\PropertyFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\ConstFetch' => true,
],
],
]
];
}
}

View File

@ -0,0 +1,103 @@
<?php
namespace Phabel\Target\Php80;
use Phabel\Plugin;
use Phabel\Plugin\NestedExpressionFixer as fixer;
class NestedExpressionFixer extends Plugin
{
/**
* Expression fixer for PHP 80.
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => [
'PhpParser\\Node\\Expr\\ClassConstFetch' =>
[
'class' =>
[
'PhpParser\\Node\\Scalar\\Encapsed' => true,
],
],
'PhpParser\\Node\\Expr\\Instanceof_' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\Assign' => true,
'PhpParser\\Node\\Expr\\AssignRef' => true,
'PhpParser\\Node\\Expr\\BooleanNot' => true,
'PhpParser\\Node\\Expr\\Include_' => true,
'PhpParser\\Node\\Expr\\Instanceof_' => true,
'PhpParser\\Node\\Expr\\Ternary' => true,
'PhpParser\\Node\\Expr\\YieldFrom' => true,
'PhpParser\\Node\\Expr\\Yield_' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Concat' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Div' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Minus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mod' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Mul' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Plus' => true,
'PhpParser\\Node\\Expr\\AssignOp\\Pow' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Div' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => true,
'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => true,
],
],
'PhpParser\\Node\\Expr\\MethodCall' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\ConstFetch' => true,
],
],
'PhpParser\\Node\\Expr\\New_' =>
[
'class' =>
[
'PhpParser\\Node\\Expr\\Yield_' => true,
],
],
'PhpParser\\Node\\Expr\\PropertyFetch' =>
[
'var' =>
[
'PhpParser\\Node\\Expr\\ConstFetch' => true,
],
],
]
];
}
}

View File

@ -14,4 +14,4 @@ $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
//$parser = (new ParserFactory)->create(ParserFactory::ONLY_PHP5);
\var_dump($a = $parser->parse(\file_get_contents($argv[1])));
var_dumP((new Standard())->prettyPrint($a));
\var_dumP((new Standard())->prettyPrint($a));

View File

@ -5,6 +5,8 @@
// for each subnode, to test compatibility with various versions of the PHP lexer.
use HaydenPierce\ClassFinder\ClassFinder;
use Phabel\Plugin\IssetExpressionFixer;
use Phabel\Plugin\NestedExpressionFixer;
use PhpParser\Builder\Class_;
use PhpParser\Builder\Method;
use PhpParser\Internal\PrintableNewAnonClassNode;
@ -265,20 +267,67 @@ foreach ($instanceArgTypes as $class => $argTypes) {
$keys = [];
foreach ($result['main'] as $version) {
$keys = array_merge_recursive($keys, $version);
$keys = \array_merge_recursive($keys, $version);
}
foreach ($keys as &$values) {
$values = array_keys($values);
$values = \array_keys($values);
}
foreach ([56, 70, 71, 72, 73, 74, 80] as $version) {
foreach (['NestedExpressionFixer', 'IssetExpressionFixer'] as $name) {
$code = <<< PHP
<?php
namespace Phabel\Target\Php$version;
use Phabel\Plugin;
class $name extends Plugin
{
}
PHP;
\file_put_contents("src/Target/Php$version/$name.php", $code);
}
}
\var_dump($keys);
foreach ($result as $type => $results) {
$name = $type === 'main' ? 'NestedExpressionFixer' : 'IssetExpressionFixer';
$type = $type === 'main' ? NestedExpressionFixer::class : IssetExpressionFixer::class;
foreach ($results as $version => $config) {
$config = \var_export($config, true);
$code = <<< PHP
<?php
namespace Phabel\Target\Php$version;
use Phabel\Plugin;
use $type as fixer;
class $name extends Plugin
{
/**
* Expression fixer for PHP $version
*
* @return array
*/
public static function runAfter(): array
{
return [
fixer::class => $config
];
}
}
PHP;
\file_put_contents("src/Target/Php$version/$name.php", $code);
}
}
var_dump($keys);
\file_put_contents('result.php', '<?php $result = '.\var_export($result, true).";");
$ckeys = array_fill_keys(array_map(fn ($a) => $a->getname(), $expressions), true);
$ckeys = \array_fill_keys(\array_map(fn ($a) => $a->getname(), $expressions), true);
foreach ($result as &$type) {
foreach ($type as &$version) {
foreach ($version as &$class) {
foreach ($class as &$arguments) {
$arguments = array_diff_key($ckeys, $arguments);
$arguments = \array_diff_key($ckeys, $arguments);
}
}
}