From aa271c72cbd2de8abca737e1f32bfeaa9dea31b5 Mon Sep 17 00:00:00 2001 From: Jake Hotson Date: Mon, 23 Jun 2025 23:50:37 +0100 Subject: [PATCH] [TASK] Update `RuleSet::addRule` to use `getLineNumber` Part of #974 --- src/RuleSet/RuleSet.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/RuleSet/RuleSet.php b/src/RuleSet/RuleSet.php index 8e0e8ae5f..203e49fda 100644 --- a/src/RuleSet/RuleSet.php +++ b/src/RuleSet/RuleSet.php @@ -94,6 +94,11 @@ public static function parseRuleSet(ParserState $parserState, RuleSet $ruleSet): $parserState->consume('}'); } + /** + * @throws \UnexpectedValueException + * if the last `Rule` is needed as a basis for setting position, but does not have a valid position, + * which should never happen + */ public function addRule(Rule $ruleToAdd, ?Rule $sibling = null): void { $propertyName = $ruleToAdd->getRule(); @@ -147,7 +152,14 @@ public function addRule(Rule $ruleToAdd, ?Rule $sibling = null): void $rulesCount = \count($rules); if ($rulesCount > 0) { $last = $rules[$rulesCount - 1]; - $ruleToAdd->setPosition($last->getLineNo() + 1, $columnNumber); + $lastsLineNumber = $last->getLineNumber(); + if (!\is_int($lastsLineNumber)) { + throw new \UnexpectedValueException( + 'A Rule without a line number was found during addRule', + 1750718399 + ); + } + $ruleToAdd->setPosition($lastsLineNumber + 1, $columnNumber); } else { $ruleToAdd->setPosition(1, $columnNumber); }