Skip to content

Commit 9eee9f5

Browse files
committed
PHP 8.2 | Generic/UnnecessaryFinalModifier: allow for readonly classes
Includes unit test. Ref: * https://wiki.php.net/rfc/readonly_classes
1 parent 4df1d5e commit 9eee9f5

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

src/Standards/Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
use PHP_CodeSniffer\Files\File;
2626
use PHP_CodeSniffer\Sniffs\Sniff;
27-
use PHP_CodeSniffer\Util\Tokens;
2827

2928
class UnnecessaryFinalModifierSniff implements Sniff
3029
{
@@ -56,16 +55,13 @@ public function process(File $phpcsFile, $stackPtr)
5655
$tokens = $phpcsFile->getTokens();
5756
$token = $tokens[$stackPtr];
5857

59-
// Skip for-statements without body.
58+
// Skip for statements without body.
6059
if (isset($token['scope_opener']) === false) {
6160
return;
6261
}
6362

64-
// Fetch previous token.
65-
$prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true);
66-
67-
// Skip for non final class.
68-
if ($prev === false || $tokens[$prev]['code'] !== T_FINAL) {
63+
if ($phpcsFile->getClassProperties($stackPtr)['is_final'] === false) {
64+
// This class is not final so we don't need to check it.
6965
return;
7066
}
7167

src/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.inc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,8 @@ final class Bar_Foo {
2727
protected function foo() {}
2828
private function Bar() {}
2929
}
30+
31+
final readonly class Foo_Bar {
32+
public final function fooBar() {}
33+
final protected function fool() {}
34+
}

src/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public function getWarningList()
4545
12 => 1,
4646
15 => 1,
4747
18 => 1,
48+
32 => 1,
49+
33 => 1,
4850
];
4951

5052
}//end getWarningList()

0 commit comments

Comments
 (0)