Skip to content

Commit 601c328

Browse files
staabmclxmstaab
andauthored
cover more unresolvable-query cases (#166)
Co-authored-by: Markus Staab <[email protected]>
1 parent 7a91f9c commit 601c328

5 files changed

+25
-0
lines changed

src/Extensions/DeployerRunMysqlQueryDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use PHPStan\Type\Constant\ConstantArrayTypeBuilder;
1414
use PHPStan\Type\DynamicFunctionReturnTypeExtension;
1515
use PHPStan\Type\IntegerType;
16+
use PHPStan\Type\MixedType;
1617
use PHPStan\Type\StringType;
1718
use PHPStan\Type\Type;
1819
use PHPStan\Type\TypeCombinator;
@@ -35,6 +36,10 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
3536
return $defaultReturn;
3637
}
3738

39+
if ($scope->getType($args[0]->value) instanceof MixedType) {
40+
return $defaultReturn;
41+
}
42+
3843
$queryReflection = new QueryReflection();
3944
$queryString = $queryReflection->resolveQueryString($args[0]->value, $scope);
4045
if (null === $queryString) {

src/Extensions/DoctrineConnectionDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use PHPStan\Reflection\ParametersAcceptorSelector;
1717
use PHPStan\Type\DynamicMethodReturnTypeExtension;
1818
use PHPStan\Type\Generic\GenericObjectType;
19+
use PHPStan\Type\MixedType;
1920
use PHPStan\Type\Type;
2021
use staabm\PHPStanDba\QueryReflection\QueryReflection;
2122
use staabm\PHPStanDba\QueryReflection\QueryReflector;
@@ -53,6 +54,10 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
5354
return $defaultReturn;
5455
}
5556

57+
if ($scope->getType($args[0]->value) instanceof MixedType) {
58+
return $defaultReturn;
59+
}
60+
5661
// make sure we don't report wrong types in doctrine 2.x
5762
if (!InstalledVersions::satisfies(new VersionParser(), 'doctrine/dbal', '3.*')) {
5863
return $defaultReturn;

src/Extensions/MysqliQueryDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use PHPStan\Type\DynamicFunctionReturnTypeExtension;
1919
use PHPStan\Type\DynamicMethodReturnTypeExtension;
2020
use PHPStan\Type\Generic\GenericObjectType;
21+
use PHPStan\Type\MixedType;
2122
use PHPStan\Type\Type;
2223
use PHPStan\Type\TypeCombinator;
2324
use staabm\PHPStanDba\QueryReflection\QueryReflection;
@@ -84,6 +85,10 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
8485
return $defaultReturn;
8586
}
8687

88+
if ($scope->getType($args[0]->value) instanceof MixedType) {
89+
return $defaultReturn;
90+
}
91+
8792
$resultType = $this->inferResultType($args[0]->value, $scope);
8893
if (null !== $resultType) {
8994
return $resultType;

src/Extensions/PdoPrepareDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use PHPStan\Type\Constant\ConstantBooleanType;
1616
use PHPStan\Type\DynamicMethodReturnTypeExtension;
1717
use PHPStan\Type\Generic\GenericObjectType;
18+
use PHPStan\Type\MixedType;
1819
use PHPStan\Type\Type;
1920
use PHPStan\Type\TypeCombinator;
2021
use staabm\PHPStanDba\QueryReflection\QueryReflection;
@@ -55,6 +56,10 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
5556
return $defaultReturn;
5657
}
5758

59+
if ($scope->getType($args[0]->value) instanceof MixedType) {
60+
return $defaultReturn;
61+
}
62+
5863
$resultType = $this->inferType($args[0]->value, $scope);
5964
if (null !== $resultType) {
6065
return $resultType;

src/Extensions/PdoQueryDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use PHPStan\Type\Constant\ConstantIntegerType;
1717
use PHPStan\Type\DynamicMethodReturnTypeExtension;
1818
use PHPStan\Type\Generic\GenericObjectType;
19+
use PHPStan\Type\MixedType;
1920
use PHPStan\Type\Type;
2021
use PHPStan\Type\TypeCombinator;
2122
use staabm\PHPStanDba\QueryReflection\QueryReflection;
@@ -60,6 +61,10 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
6061
return $defaultReturn;
6162
}
6263

64+
if ($scope->getType($args[0]->value) instanceof MixedType) {
65+
return $defaultReturn;
66+
}
67+
6368
$resultType = $this->inferType($methodCall, $args[0]->value, $scope);
6469
if (null !== $resultType) {
6570
return $resultType;

0 commit comments

Comments
 (0)