Skip to content

Commit 609647a

Browse files
authored
Merge pull request #11015 from greg0ire/phase2-optim
Make phpdoc accurate
2 parents 0b7fe18 + 293299a commit 609647a

12 files changed

+41
-60
lines changed

lib/Doctrine/ORM/Query/AST/ConditionalFactor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* @link www.doctrine-project.org
1111
*/
12-
class ConditionalFactor extends Node
12+
class ConditionalFactor extends Node implements Phase2OptimizableConditional
1313
{
1414
/** @var bool */
1515
public $not = false;

lib/Doctrine/ORM/Query/AST/ConditionalPrimary.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
*
1010
* @link www.doctrine-project.org
1111
*/
12-
class ConditionalPrimary extends Node
12+
class ConditionalPrimary extends Node implements Phase2OptimizableConditional
1313
{
1414
/** @var Node|null */
1515
public $simpleConditionalExpression;
1616

17-
/** @var ConditionalExpression|null */
17+
/** @var ConditionalExpression|Phase2OptimizableConditional|null */
1818
public $conditionalExpression;
1919

2020
/** @return bool */

lib/Doctrine/ORM/Query/AST/ConditionalTerm.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* @link www.doctrine-project.org
1111
*/
12-
class ConditionalTerm extends Node
12+
class ConditionalTerm extends Node implements Phase2OptimizableConditional
1313
{
1414
/** @var mixed[] */
1515
public $conditionalFactors = [];

lib/Doctrine/ORM/Query/AST/HavingClause.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
class HavingClause extends Node
88
{
9-
/** @var ConditionalExpression */
9+
/** @var ConditionalExpression|Phase2OptimizableConditional */
1010
public $conditionalExpression;
1111

12-
/** @param ConditionalExpression $conditionalExpression */
12+
/** @param ConditionalExpression|Phase2OptimizableConditional $conditionalExpression */
1313
public function __construct($conditionalExpression)
1414
{
1515
$this->conditionalExpression = $conditionalExpression;

lib/Doctrine/ORM/Query/AST/Join.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Join extends Node
2525
/** @var Node|null */
2626
public $joinAssociationDeclaration = null;
2727

28-
/** @var ConditionalExpression|null */
28+
/** @var ConditionalExpression|Phase2OptimizableConditional|null */
2929
public $conditionalExpression = null;
3030

3131
/**
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Doctrine\ORM\Query\AST;
6+
7+
/**
8+
* Marks types that can be used in place of a ConditionalExpression as a phase
9+
* 2 optimization.
10+
*
11+
* @internal
12+
*
13+
* @psalm-inheritors ConditionalPrimary|ConditionalFactor|ConditionalTerm
14+
*/
15+
interface Phase2OptimizableConditional
16+
{
17+
}

lib/Doctrine/ORM/Query/AST/WhenClause.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
*/
1212
class WhenClause extends Node
1313
{
14-
/** @var ConditionalExpression */
14+
/** @var ConditionalExpression|Phase2OptimizableConditional */
1515
public $caseConditionExpression;
1616

1717
/** @var mixed */
1818
public $thenScalarExpression = null;
1919

2020
/**
21-
* @param ConditionalExpression $caseConditionExpression
22-
* @param mixed $thenScalarExpression
21+
* @param ConditionalExpression|Phase2OptimizableConditional $caseConditionExpression
22+
* @param mixed $thenScalarExpression
2323
*/
2424
public function __construct($caseConditionExpression, $thenScalarExpression)
2525
{

lib/Doctrine/ORM/Query/AST/WhereClause.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
*/
1212
class WhereClause extends Node
1313
{
14-
/** @var ConditionalExpression|ConditionalTerm */
14+
/** @var ConditionalExpression|Phase2OptimizableConditional */
1515
public $conditionalExpression;
1616

17-
/** @param ConditionalExpression $conditionalExpression */
17+
/** @param ConditionalExpression|Phase2OptimizableConditional $conditionalExpression */
1818
public function __construct($conditionalExpression)
1919
{
2020
$this->conditionalExpression = $conditionalExpression;

lib/Doctrine/ORM/Query/SqlWalker.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,9 +1010,9 @@ private function generateRangeVariableDeclarationSQL(
10101010
/**
10111011
* Walks down a JoinAssociationDeclaration AST node, thereby generating the appropriate SQL.
10121012
*
1013-
* @param AST\JoinAssociationDeclaration $joinAssociationDeclaration
1014-
* @param int $joinType
1015-
* @param AST\ConditionalExpression $condExpr
1013+
* @param AST\JoinAssociationDeclaration $joinAssociationDeclaration
1014+
* @param int $joinType
1015+
* @param AST\ConditionalExpression|AST\Phase2OptimizableConditional $condExpr
10161016
* @psalm-param AST\Join::JOIN_TYPE_* $joinType
10171017
*
10181018
* @return string
@@ -2048,7 +2048,7 @@ public function walkWhereClause($whereClause)
20482048
/**
20492049
* Walk down a ConditionalExpression AST node, thereby generating the appropriate SQL.
20502050
*
2051-
* @param AST\ConditionalExpression $condExpr
2051+
* @param AST\ConditionalExpression|AST\Phase2OptimizableConditional $condExpr
20522052
*
20532053
* @return string
20542054
*
@@ -2068,7 +2068,7 @@ public function walkConditionalExpression($condExpr)
20682068
/**
20692069
* Walks down a ConditionalTerm AST node, thereby generating the appropriate SQL.
20702070
*
2071-
* @param AST\ConditionalTerm $condTerm
2071+
* @param AST\ConditionalTerm|AST\ConditionalFactor|AST\ConditionalPrimary $condTerm
20722072
*
20732073
* @return string
20742074
*
@@ -2088,7 +2088,7 @@ public function walkConditionalTerm($condTerm)
20882088
/**
20892089
* Walks down a ConditionalFactor AST node, thereby generating the appropriate SQL.
20902090
*
2091-
* @param AST\ConditionalFactor $factor
2091+
* @param AST\ConditionalFactor|AST\ConditionalPrimary $factor
20922092
*
20932093
* @return string The SQL.
20942094
*

lib/Doctrine/ORM/Tools/Pagination/WhereInWalker.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Doctrine\ORM\Query\AST\ArithmeticExpression;
88
use Doctrine\ORM\Query\AST\ConditionalExpression;
9-
use Doctrine\ORM\Query\AST\ConditionalFactor;
109
use Doctrine\ORM\Query\AST\ConditionalPrimary;
1110
use Doctrine\ORM\Query\AST\ConditionalTerm;
1211
use Doctrine\ORM\Query\AST\InListExpression;
@@ -96,10 +95,7 @@ public function walkSelectStatement(SelectStatement $AST)
9695
),
9796
]
9897
);
99-
} elseif (
100-
$AST->whereClause->conditionalExpression instanceof ConditionalExpression
101-
|| $AST->whereClause->conditionalExpression instanceof ConditionalFactor
102-
) {
98+
} else {
10399
$tmpPrimary = new ConditionalPrimary();
104100
$tmpPrimary->conditionalExpression = $AST->whereClause->conditionalExpression;
105101
$AST->whereClause->conditionalExpression = new ConditionalTerm(

phpstan-baseline.neon

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,11 @@ parameters:
440440
count: 1
441441
path: lib/Doctrine/ORM/Query/SqlWalker.php
442442

443+
-
444+
message: "#^Parameter \\#1 \\$condTerm of method Doctrine\\\\ORM\\\\Query\\\\SqlWalker\\:\\:walkConditionalTerm\\(\\) expects Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalFactor\\|Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalPrimary\\|Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalTerm, Doctrine\\\\ORM\\\\Query\\\\AST\\\\Phase2OptimizableConditional given\\.$#"
445+
count: 1
446+
path: lib/Doctrine/ORM/Query/SqlWalker.php
447+
443448
-
444449
message: "#^Result of && is always false\\.$#"
445450
count: 1
@@ -595,16 +600,6 @@ parameters:
595600
count: 1
596601
path: lib/Doctrine/ORM/Tools/Export/Driver/YamlExporter.php
597602

598-
-
599-
message: "#^Instanceof between \\*NEVER\\* and Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalFactor will always evaluate to false\\.$#"
600-
count: 1
601-
path: lib/Doctrine/ORM/Tools/Pagination/WhereInWalker.php
602-
603-
-
604-
message: "#^Instanceof between Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalExpression and Doctrine\\\\ORM\\\\Query\\\\AST\\\\ConditionalPrimary will always evaluate to false\\.$#"
605-
count: 1
606-
path: lib/Doctrine/ORM/Tools/Pagination/WhereInWalker.php
607-
608603
-
609604
message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#"
610605
count: 1

psalm-baseline.xml

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2022,18 +2022,13 @@
20222022
</PossiblyFalseArgument>
20232023
<PossiblyInvalidArgument>
20242024
<code>$AST</code>
2025-
<code>$conditionalExpression</code>
20262025
<code>$expr</code>
20272026
<code>$pathExp</code>
2028-
<code><![CDATA[$this->ConditionalExpression()]]></code>
2029-
<code><![CDATA[$this->ConditionalExpression()]]></code>
20302027
<code><![CDATA[$this->lexer->getLiteral($token)]]></code>
20312028
<code><![CDATA[$this->lexer->getLiteral($token)]]></code>
20322029
<code><![CDATA[$this->lexer->getLiteral($token)]]></code>
20332030
</PossiblyInvalidArgument>
20342031
<PossiblyInvalidPropertyAssignmentValue>
2035-
<code><![CDATA[$this->ConditionalExpression()]]></code>
2036-
<code><![CDATA[$this->ConditionalExpression()]]></code>
20372032
<code><![CDATA[$this->SimpleArithmeticExpression()]]></code>
20382033
</PossiblyInvalidPropertyAssignmentValue>
20392034
<PossiblyNullArgument>
@@ -2145,11 +2140,6 @@
21452140
<ImplicitToStringCast>
21462141
<code>$expr</code>
21472142
</ImplicitToStringCast>
2148-
<InvalidArgument>
2149-
<code>$condExpr</code>
2150-
<code>$condTerm</code>
2151-
<code>$factor</code>
2152-
</InvalidArgument>
21532143
<InvalidNullableReturnType>
21542144
<code>string</code>
21552145
</InvalidNullableReturnType>
@@ -2158,7 +2148,6 @@
21582148
</MoreSpecificImplementedParamType>
21592149
<PossiblyInvalidArgument>
21602150
<code><![CDATA[$aggExpression->pathExpression]]></code>
2161-
<code><![CDATA[$whereClause->conditionalExpression]]></code>
21622151
</PossiblyInvalidArgument>
21632152
<PossiblyNullArgument>
21642153
<code><![CDATA[$AST->whereClause]]></code>
@@ -2194,7 +2183,6 @@
21942183
</PossiblyUndefinedArrayOffset>
21952184
<RedundantConditionGivenDocblockType>
21962185
<code>$whereClause !== null</code>
2197-
<code><![CDATA[($factor->not ? 'NOT ' : '') . $this->walkConditionalPrimary($factor->conditionalPrimary)]]></code>
21982186
</RedundantConditionGivenDocblockType>
21992187
</file>
22002188
<file src="lib/Doctrine/ORM/Query/TreeWalkerAdapter.php">
@@ -2633,21 +2621,6 @@
26332621
<code>$orderByClause</code>
26342622
</PropertyNotSetInConstructor>
26352623
</file>
2636-
<file src="lib/Doctrine/ORM/Tools/Pagination/WhereInWalker.php">
2637-
<DocblockTypeContradiction>
2638-
<code><![CDATA[$AST->whereClause->conditionalExpression instanceof ConditionalExpression
2639-
|| $AST->whereClause->conditionalExpression instanceof ConditionalFactor]]></code>
2640-
<code><![CDATA[$AST->whereClause->conditionalExpression instanceof ConditionalFactor]]></code>
2641-
<code><![CDATA[$AST->whereClause->conditionalExpression instanceof ConditionalPrimary]]></code>
2642-
</DocblockTypeContradiction>
2643-
<PossiblyInvalidPropertyAssignmentValue>
2644-
<code><![CDATA[$AST->whereClause->conditionalExpression]]></code>
2645-
</PossiblyInvalidPropertyAssignmentValue>
2646-
<RedundantConditionGivenDocblockType>
2647-
<code><![CDATA[$AST->whereClause->conditionalExpression instanceof ConditionalExpression
2648-
|| $AST->whereClause->conditionalExpression instanceof ConditionalFactor]]></code>
2649-
</RedundantConditionGivenDocblockType>
2650-
</file>
26512624
<file src="lib/Doctrine/ORM/Tools/SchemaTool.php">
26522625
<ArgumentTypeCoercion>
26532626
<code>$classes</code>

0 commit comments

Comments
 (0)