Skip to content

Commit 99ff19f

Browse files
committed
Fix build
1 parent 44aef78 commit 99ff19f

4 files changed

+18
-9
lines changed

src/Rules/Symfony/InvalidArgumentDefaultValueRule.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public function processNode(Node $node, Scope $scope): array
4646
}
4747

4848
$modeType = isset($node->getArgs()[1]) ? $scope->getType($node->getArgs()[1]->value) : new NullType();
49-
if ($modeType instanceof NullType) {
49+
if ($modeType->isNull()->yes()) {
5050
$modeType = new ConstantIntegerType(2); // InputArgument::OPTIONAL
5151
}
5252
$modeTypes = TypeUtils::getConstantScalars($modeType);

src/Rules/Symfony/InvalidOptionDefaultValueRule.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function processNode(Node $node, Scope $scope): array
4848
}
4949

5050
$modeType = isset($node->getArgs()[2]) ? $scope->getType($node->getArgs()[2]->value) : new NullType();
51-
if ($modeType instanceof NullType) {
51+
if ($modeType->isNull()->yes()) {
5252
$modeType = new ConstantIntegerType(1); // InputOption::VALUE_NONE
5353
}
5454
$modeTypes = TypeUtils::getConstantScalars($modeType);

src/Type/Symfony/EnvelopeReturnTypeExtension.php

+8-3
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
use PHPStan\Reflection\MethodReflection;
88
use PHPStan\Type\Accessory\AccessoryArrayListType;
99
use PHPStan\Type\ArrayType;
10-
use PHPStan\Type\Constant\ConstantStringType;
1110
use PHPStan\Type\DynamicMethodReturnTypeExtension;
1211
use PHPStan\Type\Generic\GenericClassStringType;
1312
use PHPStan\Type\IntegerType;
1413
use PHPStan\Type\ObjectType;
1514
use PHPStan\Type\Type;
15+
use PHPStan\Type\TypeCombinator;
1616
use function count;
1717

1818
final class EnvelopeReturnTypeExtension implements DynamicMethodReturnTypeExtension
@@ -42,11 +42,16 @@ public function getTypeFromMethodCall(
4242
}
4343

4444
$argType = $scope->getType($methodCall->getArgs()[0]->value);
45-
if (!$argType instanceof ConstantStringType) {
45+
if (count($argType->getConstantStrings()) === 0) {
4646
return AccessoryArrayListType::intersectWith(new ArrayType(new IntegerType(), new ObjectType('Symfony\Component\Messenger\Stamp\StampInterface')));
4747
}
4848

49-
return AccessoryArrayListType::intersectWith(new ArrayType(new IntegerType(), new ObjectType($argType->getValue())));
49+
$objectTypes = [];
50+
foreach ($argType->getConstantStrings() as $constantString) {
51+
$objectTypes[] = new ObjectType($constantString->getValue());
52+
}
53+
54+
return AccessoryArrayListType::intersectWith(new ArrayType(new IntegerType(), TypeCombinator::union(...$objectTypes)));
5055
}
5156

5257
}

src/Type/Symfony/SerializerDynamicReturnTypeExtension.php

+8-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
use PHPStan\Analyser\Scope;
77
use PHPStan\Reflection\MethodReflection;
88
use PHPStan\Type\ArrayType;
9-
use PHPStan\Type\Constant\ConstantStringType;
109
use PHPStan\Type\DynamicMethodReturnTypeExtension;
1110
use PHPStan\Type\MixedType;
1211
use PHPStan\Type\ObjectType;
1312
use PHPStan\Type\Type;
13+
use PHPStan\Type\TypeCombinator;
14+
use function count;
1415
use function substr;
1516

1617
class SerializerDynamicReturnTypeExtension implements DynamicMethodReturnTypeExtension
@@ -45,13 +46,16 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
4546
}
4647

4748
$argType = $scope->getType($methodCall->getArgs()[1]->value);
48-
if (!$argType instanceof ConstantStringType) {
49+
if (count($argType->getConstantStrings()) === 0) {
4950
return new MixedType();
5051
}
5152

52-
$objectName = $argType->getValue();
53+
$types = [];
54+
foreach ($argType->getConstantStrings() as $constantString) {
55+
$types[] = $this->getType($constantString->getValue());
56+
}
5357

54-
return $this->getType($objectName);
58+
return TypeCombinator::union(...$types);
5559
}
5660

5761
private function getType(string $objectName): Type

0 commit comments

Comments
 (0)