diff --git a/WordPress/Sniffs/WP/GlobalVariablesOverrideSniff.php b/WordPress/Sniffs/WP/GlobalVariablesOverrideSniff.php index ab2aa8bd91..934c3e686b 100644 --- a/WordPress/Sniffs/WP/GlobalVariablesOverrideSniff.php +++ b/WordPress/Sniffs/WP/GlobalVariablesOverrideSniff.php @@ -174,7 +174,7 @@ public function process_token( $stackPtr ) { protected function process_list_assignment( $stackPtr ) { $list_open_close = Lists::getOpenClose( $this->phpcsFile, $stackPtr ); if ( false === $list_open_close ) { - // Short array, not short list. + // Live coding or short array, not short list. return; } diff --git a/WordPress/Tests/NamingConventions/PrefixAllGlobalsUnitTest.1.inc b/WordPress/Tests/NamingConventions/PrefixAllGlobalsUnitTest.1.inc index cdbe22dbcb..7fff84a00f 100644 --- a/WordPress/Tests/NamingConventions/PrefixAllGlobalsUnitTest.1.inc +++ b/WordPress/Tests/NamingConventions/PrefixAllGlobalsUnitTest.1.inc @@ -673,4 +673,14 @@ class WP_Atom_Server { } } +/* + * Safeguard that PHP 8.4+ asymmetric visibility properties don't lead to false positives. + * Including those defined using constructor property promotion. + */ +class Acronym_AsymmetricVisibilityProperties { + public private(set) string $bar = 'bar'; // Ok. + + public function __construct(public protected(set) int $foo = 0) {} // Ok. +} + // phpcs:set WordPress.NamingConventions.PrefixAllGlobals prefixes[] diff --git a/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.inc b/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.inc index a8cac33a54..ec7c009cef 100644 --- a/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.inc +++ b/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.inc @@ -237,3 +237,11 @@ class Has_Mixed_Case_Property { $lähtöaika = true; // OK. $lÄhtÖaika = true; // Bad, but only handled by the sniff if Mbstring is available. $lÄhtOaika = true; // Bad, handled via transliteration of non-ASCII chars if Mbstring is not available. + +/* + * Safeguard that the sniff handles PHP 8.4+ asymmetric visibility properties correctly. + */ +class Acronym_AsymmetricVisibilityProperties { + public private(set) string $valid_name = 'bar'; // Ok. + public(set) string $invalidName = 'bar'; // Bad. +} diff --git a/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.php b/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.php index 68b2b64a5c..0ac884c991 100644 --- a/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.php +++ b/WordPress/Tests/NamingConventions/ValidVariableNameUnitTest.php @@ -98,6 +98,7 @@ public function getErrorList() { 227 => 1, 238 => function_exists( 'mb_strtolower' ) ? 1 : 0, 239 => 1, + 246 => 1, ); } diff --git a/WordPress/Tests/Security/NonceVerificationUnitTest.8.inc b/WordPress/Tests/Security/NonceVerificationUnitTest.8.inc index c2c134ddb7..7d3a70d8b6 100644 --- a/WordPress/Tests/Security/NonceVerificationUnitTest.8.inc +++ b/WordPress/Tests/Security/NonceVerificationUnitTest.8.inc @@ -3,4 +3,5 @@ class IgnoreProperties { public $_GET = array( 'key' => 'something' ); // OK. public $_POST; // OK. + public private(set) string $_REQUEST; // Ok. } diff --git a/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.1.inc b/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.1.inc index 80603e7e8b..092fd2e589 100644 --- a/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.1.inc +++ b/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.1.inc @@ -311,6 +311,12 @@ list( get($year, $day) => &$not_a_wp_global[$year] ] = $array; -// Live coding/parse error. -// This has to be the last test in the file! -list( $tab, $tabs +/* + * Safeguard that PHP 8.4+ asymmetric visibility properties don't lead to false positives. + * Including those defined using constructor property promotion. + */ +class AsymmetricVisibilityProperties { + public private(set) string $pagenow = 'bar'; // Ok. + + public function __construct(public protected(set) int $page = 0) {} // Ok. +} diff --git a/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.8.inc b/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.8.inc new file mode 100644 index 0000000000..7dba2caad2 --- /dev/null +++ b/WordPress/Tests/WP/GlobalVariablesOverrideUnitTest.8.inc @@ -0,0 +1,8 @@ +