Skip to content

Commit 757766d

Browse files
committed
Somehow limit the combinations count of QueryBuilderTypes that can be created
1 parent 0a1a216 commit 757766d

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/Type/Doctrine/QueryBuilder/QueryBuilderMethodDynamicReturnTypeExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
class QueryBuilderMethodDynamicReturnTypeExtension implements \PHPStan\Type\DynamicMethodReturnTypeExtension
1717
{
1818

19+
private const MAX_COMBINATIONS = 16;
20+
1921
/** @var string|null */
2022
private $queryBuilderClass;
2123

@@ -62,6 +64,9 @@ public function getTypeFromMethodCall(
6264
if (count($queryBuilderTypes) === 0) {
6365
return $calledOnType;
6466
}
67+
if (count($queryBuilderTypes) > self::MAX_COMBINATIONS) {
68+
return $calledOnType;
69+
}
6570

6671
$resultTypes = [];
6772
foreach ($queryBuilderTypes as $queryBuilderType) {

src/Type/Doctrine/QueryBuilder/QueryBuilderTypeSpecifyingExtension.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
class QueryBuilderTypeSpecifyingExtension implements MethodTypeSpecifyingExtension, TypeSpecifierAwareExtension
2121
{
2222

23+
private const MAX_COMBINATIONS = 16;
24+
2325
/** @var string|null */
2426
private $queryBuilderClass;
2527

@@ -81,6 +83,10 @@ public function specifyTypes(MethodReflection $methodReflection, MethodCall $nod
8183
return new SpecifiedTypes([]);
8284
}
8385

86+
if (count($queryBuilderTypes) > self::MAX_COMBINATIONS) {
87+
return new SpecifiedTypes([]);
88+
}
89+
8490
$queryBuilderNode = $node;
8591
while ($queryBuilderNode instanceof MethodCall) {
8692
$queryBuilderNode = $queryBuilderNode->var;

0 commit comments

Comments
 (0)