Skip to content

Commit f2f9878

Browse files
committed
SlevomatCodingStandard.Classes.ClassConstantVisibility: Added support for final constants
1 parent 4ac3165 commit f2f9878

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

SlevomatCodingStandard/Sniffs/Classes/ClassConstantVisibilitySniff.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use const T_ANON_CLASS;
1414
use const T_CLASS;
1515
use const T_CONST;
16+
use const T_FINAL;
1617
use const T_INTERFACE;
1718
use const T_PRIVATE;
1819
use const T_PROTECTED;
@@ -56,6 +57,10 @@ public function process(File $phpcsFile, $constantPointer): void
5657
}
5758

5859
$visibilityPointer = TokenHelper::findPreviousEffective($phpcsFile, $constantPointer - 1);
60+
if ($tokens[$visibilityPointer]['code'] === T_FINAL) {
61+
$visibilityPointer = TokenHelper::findPreviousEffective($phpcsFile, $visibilityPointer - 1);
62+
}
63+
5964
if (in_array($tokens[$visibilityPointer]['code'], [T_PUBLIC, T_PROTECTED, T_PRIVATE], true)) {
6065
return;
6166
}

tests/Sniffs/Classes/ClassConstantVisibilitySniffTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public function testErrors(): void
1111
{
1212
$report = self::checkFile(__DIR__ . '/data/classWithConstants.php');
1313

14-
self::assertSame(2, $report->getErrorCount());
14+
self::assertSame(3, $report->getErrorCount());
1515

1616
self::assertNoSniffError($report, 7);
1717
self::assertNoSniffError($report, 9);
@@ -30,6 +30,16 @@ public function testErrors(): void
3030
ClassConstantVisibilitySniff::CODE_MISSING_CONSTANT_VISIBILITY,
3131
'Constant class@anonymous::PUBLIC_FOO visibility missing.'
3232
);
33+
34+
self::assertSniffError(
35+
$report,
36+
25,
37+
ClassConstantVisibilitySniff::CODE_MISSING_CONSTANT_VISIBILITY,
38+
'Constant class@anonymous::FINAL_WITHOUT_VISIBILITY visibility missing.'
39+
);
40+
41+
self::assertNoSniffError($report, 26);
42+
self::assertNoSniffError($report, 27);
3343
}
3444

3545
public function testNoClassConstants(): void

tests/Sniffs/Classes/data/classWithConstants.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?php
1+
<?php // lint >= 8.1
22

33
class ClassWithConstants
44
{
@@ -22,4 +22,7 @@ public function __construct()
2222

2323
const PUBLIC_FOO = 'public';
2424

25+
final const FINAL_WITHOUT_VISIBILITY = 'finalWithoutVisibility';
26+
public final const FINAL_WITH_VISIBILITY = 'finalWithVisibility';
27+
final public const FINAL_WITH_VISIBILITY2 = 'finalWithVisibility2';
2528
};

0 commit comments

Comments
 (0)