Skip to content

Commit

Permalink
Make phpstan as happy as possible
Browse files Browse the repository at this point in the history
  • Loading branch information
bbrala committed Nov 21, 2023
1 parent 76d7940 commit 0f70eb0
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
5 changes: 5 additions & 0 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,8 @@ parameters:
message: "#^Call to an undefined method PHPStan\\\\Type\\\\Type\\:\\:getValue\\(\\)\\.$#"
count: 1
path: src/Drupal9/Rector/Deprecation/ExtensionPathRector.php

-
message: "#^Doing instanceof PHPStan\\\\Type\\\\ObjectType is error\\-prone and deprecated\\. Use Type\\:\\:isObject\\(\\) or Type\\:\\:getObjectClassNames\\(\\) instead\\.$#"
count: 1
path: src/Rector/Class_/FunctionalTestDefaultThemePropertyRector.php
21 changes: 14 additions & 7 deletions src/Rector/Class_/FunctionalTestDefaultThemePropertyRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use PhpParser\Builder\Property;
use PhpParser\Node;
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\Php\PhpPropertyReflection;
use PHPStan\Type\ObjectType;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Core\Exception\ShouldNotHappenException;
Expand All @@ -24,19 +25,19 @@
final class FunctionalTestDefaultThemePropertyRector extends AbstractScopeAwareRector
{
/**
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private ValueResolver $valueResolver;
private PhpDocInfoFactory $phpDocInfoFactory;

/**
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
* @var \Rector\Core\PhpParser\Node\Value\ValueResolver
*/
private PhpDocInfoFactory $phpDocInfoFactory;
private ValueResolver $valueResolver;

public function __construct(ValueResolver $valueResolver, PhpDocInfoFactory $phpDocInfoFactory)
{
$this->valueResolver = $valueResolver;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->valueResolver = $valueResolver;
}

public function getRuleDefinition(): RuleDefinition
Expand Down Expand Up @@ -76,9 +77,12 @@ public function refactorWithScope(Node $node, Scope $scope): ?Node
return null;
}
$type = $this->nodeTypeResolver->getType($node);
if (!$type instanceof ObjectType) {
throw new ShouldNotHappenException(__CLASS__.' type for node was not '.ObjectType::class);

if(count($type->getObjectClassNames()) === 0 || !$type->isObject()->yes()) {
return null;
}

assert($type instanceof ObjectType);
$browserTestBaseType = new ObjectType(BrowserTestBase::class);
if ($type->isSmallerThanOrEqual($browserTestBaseType)->yes()) {
return null;
Expand All @@ -92,10 +96,13 @@ public function refactorWithScope(Node $node, Scope $scope): ?Node
}

$defaultThemeProperty = $classReflection->getProperty('defaultTheme', $scope);
assert($defaultThemeProperty instanceof \PHPStan\Reflection\Php\PhpPropertyReflection);

$reflectionProperty = $defaultThemeProperty->getNativeReflection();
$betterReflection = $reflectionProperty->getBetterReflection();
$defaultValueExpression = $betterReflection->getDefaultValueExpression();


if ($defaultValueExpression instanceof Node\Scalar\String_ && strlen($this->valueResolver->getValue($defaultValueExpression)) > 0) {
return null;
}
Expand Down

0 comments on commit 0f70eb0

Please sign in to comment.