Skip to content

Commit 12db2d7

Browse files
authored
Merge pull request microsoft#363 from TysonAndre/fix-deprecation
Fix PHP 8.2 deprecation notices in tolerant-php-parser
2 parents af2ff38 + c11175a commit 12db2d7

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/Parser.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2128,6 +2128,7 @@ private function parseBinaryExpressionOrHigher($precedence, $parentNode) {
21282128
}
21292129

21302130
if ($shouldOperatorTakePrecedenceOverUnary) {
2131+
/** @var UnaryOpExpression $unaryExpression */
21312132
$unaryExpression = $leftOperand;
21322133
$leftOperand = $unaryExpression->operand;
21332134
}
@@ -2149,6 +2150,7 @@ private function parseBinaryExpressionOrHigher($precedence, $parentNode) {
21492150

21502151
// Rebuild the unary expression if we deconstructed it earlier.
21512152
if ($shouldOperatorTakePrecedenceOverUnary) {
2153+
/** @var UnaryOpExpression $unaryExpression */
21522154
$leftOperand->parent = $unaryExpression;
21532155
$unaryExpression->operand = $leftOperand;
21542156
$leftOperand = $unaryExpression;
@@ -2275,6 +2277,14 @@ private function getBinaryOperatorPrecedenceAndAssociativity($token) {
22752277
// InstanceOf has other remaining issues, but this heuristic is an improvement for many common cases such as `$x && $y = $z`
22762278
];
22772279

2280+
/**
2281+
* @param Token|Node $leftOperand
2282+
* @param Token $operatorToken
2283+
* @param Token|null $byRefToken
2284+
* @param Token|Node $rightOperand
2285+
* @param Node $parentNode
2286+
* @return BinaryExpression|AssignmentExpression
2287+
*/
22782288
private function makeBinaryExpression($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
22792289
$assignmentExpression = $operatorToken->kind === TokenKind::EqualsToken;
22802290
if ($assignmentExpression || \array_key_exists($operatorToken->kind, self::KNOWN_ASSIGNMENT_TOKEN_SET)) {
@@ -2289,8 +2299,12 @@ private function makeBinaryExpression($leftOperand, $operatorToken, $byRefToken,
22892299
}
22902300
$binaryExpression = $assignmentExpression ? new AssignmentExpression() : new BinaryExpression();
22912301
$binaryExpression->parent = $parentNode;
2292-
$leftOperand->parent = $binaryExpression;
2293-
$rightOperand->parent = $binaryExpression;
2302+
if ($leftOperand instanceof Node) {
2303+
$leftOperand->parent = $binaryExpression;
2304+
}
2305+
if ($rightOperand instanceof Node) {
2306+
$rightOperand->parent = $binaryExpression;
2307+
}
22942308
$binaryExpression->leftOperand = $leftOperand;
22952309
$binaryExpression->operator = $operatorToken;
22962310
if ($binaryExpression instanceof AssignmentExpression && isset($byRefToken)) {

tests/LexicalGrammarTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
require_once __DIR__ . '/CallbackTestListener.php';
1515

1616
class LexicalGrammarTest extends TestCase {
17+
private $expectedTokensFile;
18+
private $tokens;
1719
const FILE_PATTERN = __DIR__ . "/cases/lexical/*";
1820
public function run(TestResult $result = null) : TestResult {
1921
if (!isset($GLOBALS["GIT_CHECKOUT_LEXER"])) {

tests/ParserGrammarTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
require_once __DIR__ . '/CallbackTestListener.php';
1616

1717
class ParserGrammarTest extends TestCase {
18+
private $expectedTokensFile;
19+
private $expectedDiagnosticsFile;
20+
private $tokens;
21+
private $diagnostics;
1822
public function run(TestResult $result = null) : TestResult {
1923
if (!isset($GLOBALS["GIT_CHECKOUT_PARSER"])) {
2024
$GLOBALS["GIT_CHECKOUT_PARSER"] = true;

0 commit comments

Comments
 (0)