import rector self

This commit is contained in:
Tomas Votruba 2019-08-21 19:14:03 +02:00
parent 49e36355c4
commit 361a2936d7
16 changed files with 65 additions and 41 deletions

View File

@ -3,7 +3,12 @@
namespace Rector\CodeQuality\Rector\Catch_;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Catch_;
use PhpParser\Node\Stmt\Throw_;
use PhpParser\NodeTraverser;
use Rector\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
@ -69,15 +74,15 @@ CODE_SAMPLE
$catchedThrowableVariable = $node->var;
$this->traverseNodesWithCallable($node->stmts, function (Node $node) use ($catchedThrowableVariable): ?int {
if (! $node instanceof Node\Stmt\Throw_) {
if (! $node instanceof Throw_) {
return null;
}
if (! $node->expr instanceof Node\Expr\New_) {
if (! $node->expr instanceof New_) {
return null;
}
if (! $node->expr->class instanceof Node\Name) {
if (! $node->expr->class instanceof Name) {
return null;
}
@ -88,10 +93,10 @@ CODE_SAMPLE
if (! isset($node->expr->args[1])) {
// get previous code
$node->expr->args[1] = new Node\Arg(new Node\Expr\MethodCall($catchedThrowableVariable, 'getCode'));
$node->expr->args[1] = new Arg(new MethodCall($catchedThrowableVariable, 'getCode'));
}
$node->expr->args[2] = new Node\Arg($catchedThrowableVariable);
$node->expr->args[2] = new Arg($catchedThrowableVariable);
// nothing more to add
return NodeTraverser::STOP_TRAVERSAL;

View File

@ -8,8 +8,10 @@ use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\BinaryOp;
use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
use PhpParser\Node\Expr\BinaryOp\NotIdentical;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use PhpParser\Node\Stmt\PropertyProperty;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockManipulator;
@ -129,7 +131,7 @@ CODE_SAMPLE
return null;
}
/** @var Node\Stmt\Property $property */
/** @var Property $property */
$property = $node->getAttribute(AttributeKey::PARENT_NODE);
// we need docblock
@ -222,7 +224,7 @@ CODE_SAMPLE
$isNextNodeCountingProperty = (bool) $this->betterNodeFinder->findFirst($node->right, function (Node $node) use (
$propertyNames
): ?bool {
if (! $node instanceof Expr\FuncCall) {
if (! $node instanceof FuncCall) {
return null;
}

View File

@ -4,6 +4,7 @@ namespace Rector\CodingStyle\Rector\Namespace_;
use Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\ConstFetch;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Namespace_;
@ -202,7 +203,7 @@ CODE_SAMPLE
$shortName = $this->classNaming->getShortName($fullyQualifiedName);
$parentNode = $name->getAttribute(AttributeKey::PARENT_NODE);
if ($parentNode instanceof Node\Expr\ConstFetch) { // is true, false, null etc.
if ($parentNode instanceof ConstFetch) { // is true, false, null etc.
return true;
}

View File

@ -3,7 +3,9 @@
namespace Rector\DeadCode\Rector\ClassMethod;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Expression;
use PhpParser\Node\Stmt\Return_;
@ -117,8 +119,8 @@ CODE_SAMPLE
}
/**
* @param Node\Arg[] $args
* @param Node\Param[] $params
* @param Arg[] $args
* @param Param[] $params
*/
private function areArgsAndParamsEqual(array $args, array $params): bool
{

View File

@ -3,6 +3,7 @@
namespace Rector\DeadCode\Rector\Switch_;
use PhpParser\Node;
use PhpParser\Node\Stmt\Case_;
use PhpParser\Node\Stmt\Switch_;
use Rector\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
@ -74,7 +75,7 @@ CODE_SAMPLE
return null;
}
/** @var Node\Stmt\Case_|null $previousCase */
/** @var Case_|null $previousCase */
$previousCase = null;
foreach ($node->cases as $case) {
if ($previousCase && $this->areNodesEqual($case->stmts, $previousCase->stmts)) {

View File

@ -3,7 +3,9 @@
namespace Rector\Nette\Rector\FuncCall;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Expr\StaticCall;
use Rector\Rector\AbstractRector;
use Rector\RectorDefinition\CodeSample;
use Rector\RectorDefinition\RectorDefinition;
@ -89,7 +91,7 @@ CODE_SAMPLE
return null;
}
private function refactorJsonEncode(Node\Expr\FuncCall $funcCall): Node\Expr\StaticCall
private function refactorJsonEncode(FuncCall $funcCall): StaticCall
{
$args = $funcCall->args;
if (isset($args[1])) {
@ -97,14 +99,14 @@ CODE_SAMPLE
if ($this->isName($secondArgumentValue, 'JSON_PRETTY_PRINT')) {
$prettyClassConstant = $this->createClassConstant('Nette\Utils\Json', 'PRETTY');
$args[1] = new Node\Arg($prettyClassConstant);
$args[1] = new Arg($prettyClassConstant);
}
}
return $this->createStaticCall('Nette\Utils\Json', 'encode', $args);
}
private function refactorJsonDecode(Node\Expr\FuncCall $funcCall): Node\Expr\StaticCall
private function refactorJsonDecode(FuncCall $funcCall): StaticCall
{
$args = $funcCall->args;
@ -115,7 +117,7 @@ CODE_SAMPLE
unset($args[1]);
} elseif ($this->isTrue($secondArgumentValue)) {
$forceArrayClassConstant = $this->createClassConstant('Nette\Utils\Json', 'FORCE_ARRAY');
$args[1] = new Node\Arg($forceArrayClassConstant);
$args[1] = new Arg($forceArrayClassConstant);
}
}

View File

@ -15,6 +15,7 @@ use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Param;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
@ -607,7 +608,7 @@ final class NodeTypeResolver
$this->callableNodeTraverser->traverseNodesWithCallable(
(array) $classMethod->stmts,
function (Node $node) use ($paramName, &$paramStaticType): ?int {
if (! $node instanceof Node\Expr\Variable) {
if (! $node instanceof Variable) {
return null;
}

View File

@ -4,11 +4,13 @@ namespace Rector\SymfonyCodeQuality\Rector\Class_;
use Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Array_;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Scalar\LNumber;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
@ -306,7 +308,7 @@ CODE_SAMPLE
*/
private function createSingleMethod(
array $methodNamesWithPriorities,
Node\Expr $expr,
Expr $expr,
Array_ $eventsToMethodsArray
): void {
[$methodName, $priority] = $methodNamesWithPriorities[0];
@ -314,7 +316,7 @@ CODE_SAMPLE
if ($priority) {
$methodNameWithPriorityArray = new Array_();
$methodNameWithPriorityArray->items[] = new ArrayItem(new String_($methodName));
$methodNameWithPriorityArray->items[] = new ArrayItem(new Node\Scalar\LNumber((int) $priority));
$methodNameWithPriorityArray->items[] = new ArrayItem(new LNumber((int) $priority));
$eventsToMethodsArray->items[] = new ArrayItem($methodNameWithPriorityArray, $expr);
} else {
@ -328,7 +330,7 @@ CODE_SAMPLE
*/
private function createMultipleMethods(
array $methodNamesWithPriorities,
Node\Expr $expr,
Expr $expr,
Array_ $eventsToMethodsArray
): void {
$multipleMethodsArray = new Array_();
@ -339,7 +341,7 @@ CODE_SAMPLE
if ($priority) {
$methodNameWithPriorityArray = new Array_();
$methodNameWithPriorityArray->items[] = new ArrayItem(new String_($methodName));
$methodNameWithPriorityArray->items[] = new ArrayItem(new Node\Scalar\LNumber((int) $priority));
$methodNameWithPriorityArray->items[] = new ArrayItem(new LNumber((int) $priority));
$multipleMethodsArray->items[] = new ArrayItem($methodNameWithPriorityArray);
} else {

View File

@ -3,6 +3,7 @@
namespace Rector\TypeDeclaration\TypeInferer;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\ArrayDimFetch;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\PropertyFetch;
@ -60,7 +61,7 @@ final class AssignToPropertyTypeInferer extends AbstractTypeInferer
* - $this->propertyName = $expr;
* - $this->propertyName[] = $expr;
*/
private function matchPropertyAssignExpr(Assign $assign, string $propertyName): ?Node\Expr
private function matchPropertyAssignExpr(Assign $assign, string $propertyName): ?Expr
{
if ($assign->var instanceof PropertyFetch) {
if (! $this->nameResolver->isName($assign->var, $propertyName)) {

View File

@ -6,6 +6,7 @@ use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PHPStan\Type\ArrayType;
use PHPStan\Type\Type;
use Rector\NodeTypeResolver\Node\AttributeKey;
@ -38,7 +39,7 @@ final class PropertyNodeParamTypeInferer extends AbstractTypeInferer implements
$paramName = $this->nameResolver->getName($param);
/** @var Node\Stmt\ClassMethod $classMethod */
/** @var ClassMethod $classMethod */
$classMethod = $param->getAttribute(AttributeKey::PARENT_NODE);
$propertyStaticTypes = [];

View File

@ -2,8 +2,8 @@
namespace Rector\TypeDeclaration\TypeInferer\PropertyTypeInferer;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Property;
use PHPStan\Type\IntersectionType;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\TypeDeclaration\Contract\TypeInferer\PropertyTypeInfererInterface;
@ -25,7 +25,7 @@ final class AllAssignNodePropertyTypeInferer extends AbstractTypeInferer impleme
/**
* @return string[]
*/
public function inferProperty(Node\Stmt\Property $property): array
public function inferProperty(Property $property): array
{
/** @var ClassLike $class */
$class = $property->getAttribute(AttributeKey::CLASS_NODE);

View File

@ -6,9 +6,13 @@ use Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\NullableType;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Property;
use PhpParser\NodeTraverser;
use PHPStan\Type\NullType;
use PHPStan\Type\Type;
@ -22,9 +26,9 @@ final class ConstructorPropertyTypeInferer extends AbstractTypeInferer implement
/**
* @return string[]|IdentifierValueObject[]
*/
public function inferProperty(Node\Stmt\Property $property): array
public function inferProperty(Property $property): array
{
/** @var Node\Stmt\Class_ $class */
/** @var Class_ $class */
$class = $property->getAttribute(AttributeKey::CLASS_NODE);
$classMethod = $class->getMethod('__construct');
@ -192,11 +196,11 @@ final class ConstructorPropertyTypeInferer extends AbstractTypeInferer implement
}
// special case for alias
if ($param->type instanceof Node\Name\FullyQualified) {
if ($param->type instanceof FullyQualified) {
$fullyQualifiedName = $param->type->toString();
$originalName = $param->type->getAttribute('originalName');
if ($fullyQualifiedName && $originalName instanceof Node\Name) {
if ($fullyQualifiedName && $originalName instanceof Name) {
// if the FQN has different ending than the original, it was aliased and we need to return the alias
if (! Strings::endsWith($fullyQualifiedName, '\\' . $originalName->toString())) {
return new IdentifierValueObject($originalName->toString(), true);

View File

@ -8,13 +8,9 @@ parameters:
# autoload-buggy cases
- "*.php.inc"
# string might not exist for SplitStringClassConstantToClassConstFetchRector
- "packages/Symfony/src/Rector/Console/ConsoleExceptionToErrorEventConstantRector.php"
- "tests/Rector/Argument/ArgumentRemoverRector/ArgumentRemoverRectorTest.php"
- "tests/Rector/Argument/ArgumentDefaultValueReplacerRector/ArgumentDefaultValueReplacerRectorTest.php"
# so Rector code is still PHP 7.1 compatible
php_version_features: '7.1'
services:
# Rector\TypeDeclaration\Rector\ClassMethod\AddArrayReturnDocTypeRector:
# Rector\CodingStyle\Rector\Namespace_\ImportFullyQualifiedNamesRector: ~

View File

@ -4,6 +4,7 @@ namespace Rector\PhpParser\Node\Manipulator;
use Iterator;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrowFunction;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Expr\Yield_;
use PhpParser\Node\FunctionLike;
@ -213,7 +214,7 @@ final class FunctionLikeManipulator
$this->callableNodeTraverser->traverseNodesWithCallable((array) $functionLike->stmts, function (Node $node) use (
&$localReturnNodes
): ?int {
if ($node instanceof Function_ || $node instanceof Closure || $node instanceof Node\Expr\ArrowFunction) {
if ($node instanceof Function_ || $node instanceof Closure || $node instanceof ArrowFunction) {
// skip Return_ nodes in nested functions
return NodeTraverser::DONT_TRAVERSE_CHILDREN;
}

View File

@ -4,7 +4,9 @@ namespace Rector\PhpParser\Node\Manipulator;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Stmt\Class_;
use PHPStan\Analyser\Scope;
use PHPStan\Broker\Broker;
@ -109,7 +111,7 @@ final class PropertyFetchManipulator
return null;
}
/** @var Node\Expr\Assign $node */
/** @var Assign $node */
$propertyName = $this->nameResolver->getName($node->expr);
if ($propertyName) {
$propertyNames[] = $propertyName;
@ -127,11 +129,11 @@ final class PropertyFetchManipulator
*/
public function isVariableAssignToThisPropertyFetch(Node $node, string $variableName): bool
{
if (! $node instanceof Node\Expr\Assign) {
if (! $node instanceof Assign) {
return false;
}
if (! $node->expr instanceof Node\Expr\Variable) {
if (! $node->expr instanceof Variable) {
return false;
}

View File

@ -4,7 +4,10 @@ namespace Rector\Rector\MethodBody;
use Nette\Utils\Strings;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use Rector\Exception\ShouldNotHappenException;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Rector\AbstractRector;
@ -115,16 +118,16 @@ CODE_SAMPLE
/**
* @param MethodCall[] $methodCalls
* @return Node\Expr\Variable|Node\Expr\PropertyFetch
* @return Variable|PropertyFetch
*/
private function extractRootVariable(array $methodCalls): Node\Expr
private function extractRootVariable(array $methodCalls): Expr
{
foreach ($methodCalls as $methodCall) {
if ($methodCall->var instanceof Node\Expr\Variable) {
if ($methodCall->var instanceof Variable) {
return $methodCall->var;
}
if ($methodCall->var instanceof Node\Expr\PropertyFetch) {
if ($methodCall->var instanceof PropertyFetch) {
return $methodCall->var;
}
}