From b3fcd68988854a8963d5a615298320b4ea8195bf Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Mon, 21 Jul 2025 23:36:08 +0200 Subject: [PATCH 1/2] Check for identifiers before identifier --- src/Analyser/Ignore/IgnoredError.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Analyser/Ignore/IgnoredError.php b/src/Analyser/Ignore/IgnoredError.php index 8f44d3cb28..565e58795b 100644 --- a/src/Analyser/Ignore/IgnoredError.php +++ b/src/Analyser/Ignore/IgnoredError.php @@ -31,19 +31,19 @@ public static function stringifyPattern($ignoredError): string if (isset($ignoredError['message'])) { $message = $ignoredError['message']; } - if (isset($ignoredError['identifier'])) { - if ($message === '') { - $message = $ignoredError['identifier']; - } else { - $message = sprintf('%s (%s)', $message, $ignoredError['identifier']); - } - } elseif (isset($ignoredError['identifiers'])) { + if (isset($ignoredError['identifiers'])) { $identifierList = implode(', ', $ignoredError['identifiers']); if ($message === '') { $message = $identifierList; } else { $message = sprintf('%s (%s)', $message, $identifierList); } + } elseif (isset($ignoredError['identifier'])) { + if ($message === '') { + $message = $ignoredError['identifier']; + } else { + $message = sprintf('%s (%s)', $message, $ignoredError['identifier']); + } } if ($message === '') { From 740cb3c2bbc9408eabca1924e242768ab697c58d Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Tue, 22 Jul 2025 23:10:35 +0200 Subject: [PATCH 2/2] Add test --- tests/PHPStan/Analyser/AnalyserTest.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/PHPStan/Analyser/AnalyserTest.php b/tests/PHPStan/Analyser/AnalyserTest.php index 297d612c8d..84c8b68d1e 100644 --- a/tests/PHPStan/Analyser/AnalyserTest.php +++ b/tests/PHPStan/Analyser/AnalyserTest.php @@ -98,6 +98,16 @@ public function testFileWithAnIgnoredWrongIdentifier(): void $this->assertSame('Ignored error pattern wrong.identifier was not matched in reported errors.', $result[1]); } + public function testFileWithAnIgnoredWithIdentifierAndIdentifiers(): void + { + $result = $this->runAnalyser([['identifier' => 'some.identifier', 'identifiers' => ['wrong.identifiers']]], true, __DIR__ . '/data/bootstrap-error.php', false); + $this->assertCount(2, $result); + assert($result[0] instanceof Error); + $this->assertSame('Fail.', $result[0]->getMessage()); + assert(is_string($result[1])); + $this->assertSame('Ignored error pattern wrong.identifiers was not matched in reported errors.', $result[1]); + } + public function testFileWithAnIgnoredErrorMessageAndCorrectIdentifier(): void { $result = $this->runAnalyser([['message' => '#Fail\.#', 'identifier' => 'tests.alwaysFail']], true, __DIR__ . '/data/bootstrap-error.php', false);