From 4ed2199ee079a39afeeac6fd780e5452f23b167b Mon Sep 17 00:00:00 2001 From: jrfnl Date: Sun, 16 Feb 2025 06:25:31 +0100 Subject: [PATCH] Squiz/MemberVarSpacing: allow for PHP 8.1+ readonly properties Readonly properties can be declared without visibility: https://3v4l.org/OS9hE The sniff did not take this into account. Fixed now. Includes tests. --- .../Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php | 1 + .../Tests/WhiteSpace/MemberVarSpacingUnitTest.inc | 7 +++++++ .../WhiteSpace/MemberVarSpacingUnitTest.inc.fixed | 11 +++++++++++ .../Tests/WhiteSpace/MemberVarSpacingUnitTest.php | 4 ++++ 4 files changed, 23 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php b/src/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php index 773d25d4f5..847b43b8c5 100644 --- a/src/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php +++ b/src/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php @@ -47,6 +47,7 @@ protected function processMemberVar(File $phpcsFile, $stackPtr) $validPrefixes = Tokens::$methodPrefixes; $validPrefixes[] = T_VAR; + $validPrefixes[] = T_READONLY; $startOfStatement = $phpcsFile->findPrevious($validPrefixes, ($stackPtr - 1), null, false, null, true); if ($startOfStatement === false) { diff --git a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc index 12b55176c4..8072ece66b 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc +++ b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc @@ -372,3 +372,10 @@ enum SomeEnum case ONE = 'one'; } + +class SupportReadonlyProperties { + readonly int $readonlyA; + public readonly string $publicReadonly; + readonly bool $readonlyB; + readonly private bool $readonlyPrivate; +} diff --git a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed index d683eaadfb..12953c21a3 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed @@ -357,3 +357,14 @@ enum SomeEnum case ONE = 'one'; } + +class SupportReadonlyProperties { + + readonly int $readonlyA; + + public readonly string $publicReadonly; + + readonly bool $readonlyB; + + readonly private bool $readonlyPrivate; +} diff --git a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php index 548ee3baa8..671ed51f85 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php +++ b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php @@ -67,6 +67,10 @@ public function getErrorList() 353 => 1, 357 => 1, 366 => 1, + 377 => 1, + 378 => 1, + 379 => 1, + 380 => 1, ]; }//end getErrorList()