diff --git a/PHPCSUtils/TestUtils/UtilityMethodTestCase.php b/PHPCSUtils/TestUtils/UtilityMethodTestCase.php index 3e42f916..4259544a 100644 --- a/PHPCSUtils/TestUtils/UtilityMethodTestCase.php +++ b/PHPCSUtils/TestUtils/UtilityMethodTestCase.php @@ -329,7 +329,15 @@ public static function resetTestFile() */ public static function usesPhp8NameTokens() { - return \version_compare(\PHP_VERSION_ID, '80000', '>=') === true; + $version = Helper::getVersion(); + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + && (\version_compare($version, '3.5.7', '<') === true + || \version_compare($version, '4.0.0', '>=') === true) + ) { + return true; + } + + return false; } /** diff --git a/PHPCSUtils/Tokens/Collections.php b/PHPCSUtils/Tokens/Collections.php index c591d023..f6a9de07 100644 --- a/PHPCSUtils/Tokens/Collections.php +++ b/PHPCSUtils/Tokens/Collections.php @@ -620,6 +620,11 @@ public static function nameTokens() \T_STRING => \T_STRING, ]; + /* + * PHP >= 8.0 in combination with PHPCS < 3.5.7 and all PHP versions in combination + * with PHPCS >= 3.5.7, though when using PHPCS 3.5.7 < 4.0.0, these tokens are + * not yet in use, i.e. the PHP 8.0 change is "undone" for PHPCS 3.x. + */ if (\defined('T_NAME_QUALIFIED') === true) { $tokens[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; } diff --git a/Tests/Tokens/Collections/NameTokensTest.php b/Tests/Tokens/Collections/NameTokensTest.php index de2175b4..8beecb07 100644 --- a/Tests/Tokens/Collections/NameTokensTest.php +++ b/Tests/Tokens/Collections/NameTokensTest.php @@ -10,6 +10,7 @@ namespace PHPCSUtils\Tests\Tokens\Collections; +use PHPCSUtils\BackCompat\Helper; use PHPCSUtils\Tokens\Collections; use PHPUnit\Framework\TestCase; @@ -32,11 +33,15 @@ class NameTokensTest extends TestCase */ public function testNameTokens() { + $version = Helper::getVersion(); $expected = [ \T_STRING => \T_STRING, ]; - if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true) { + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + || (\version_compare($version, '3.5.7', '>=') === true + && \version_compare($version, '4.0.0', '<') === true) + ) { $expected[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; $expected[\T_NAME_FULLY_QUALIFIED] = \T_NAME_FULLY_QUALIFIED; $expected[\T_NAME_RELATIVE] = \T_NAME_RELATIVE; diff --git a/Tests/Tokens/Collections/NamespacedNameTokensTest.php b/Tests/Tokens/Collections/NamespacedNameTokensTest.php index 1e6dc845..185744fa 100644 --- a/Tests/Tokens/Collections/NamespacedNameTokensTest.php +++ b/Tests/Tokens/Collections/NamespacedNameTokensTest.php @@ -10,6 +10,7 @@ namespace PHPCSUtils\Tests\Tokens\Collections; +use PHPCSUtils\BackCompat\Helper; use PHPCSUtils\Tokens\Collections; use PHPUnit\Framework\TestCase; @@ -32,13 +33,17 @@ class NamespacedNameTokensTest extends TestCase */ public function testNamespacedNameTokens() { + $version = Helper::getVersion(); $expected = [ \T_NS_SEPARATOR => \T_NS_SEPARATOR, \T_NAMESPACE => \T_NAMESPACE, \T_STRING => \T_STRING, ]; - if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true) { + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + || (\version_compare($version, '3.5.7', '>=') === true + && \version_compare($version, '4.0.0', '<') === true) + ) { $expected[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; $expected[\T_NAME_FULLY_QUALIFIED] = \T_NAME_FULLY_QUALIFIED; $expected[\T_NAME_RELATIVE] = \T_NAME_RELATIVE; diff --git a/Tests/Tokens/Collections/ParameterTypeTokensTest.php b/Tests/Tokens/Collections/ParameterTypeTokensTest.php index 86c3eac3..68f297fe 100644 --- a/Tests/Tokens/Collections/ParameterTypeTokensTest.php +++ b/Tests/Tokens/Collections/ParameterTypeTokensTest.php @@ -10,6 +10,7 @@ namespace PHPCSUtils\Tests\Tokens\Collections; +use PHPCSUtils\BackCompat\Helper; use PHPCSUtils\Tokens\Collections; use PHPUnit\Framework\TestCase; @@ -32,6 +33,7 @@ class ParameterTypeTokensTest extends TestCase */ public function testParameterTypeTokens() { + $version = Helper::getVersion(); $expected = [ \T_CALLABLE => \T_CALLABLE, \T_SELF => \T_SELF, @@ -44,7 +46,10 @@ public function testParameterTypeTokens() \T_STRING => \T_STRING, ]; - if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true) { + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + || (\version_compare($version, '3.5.7', '>=') === true + && \version_compare($version, '4.0.0', '<') === true) + ) { $expected[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; $expected[\T_NAME_FULLY_QUALIFIED] = \T_NAME_FULLY_QUALIFIED; $expected[\T_NAME_RELATIVE] = \T_NAME_RELATIVE; diff --git a/Tests/Tokens/Collections/PropertyTypeTokensTest.php b/Tests/Tokens/Collections/PropertyTypeTokensTest.php index 1bbe881c..885a93b7 100644 --- a/Tests/Tokens/Collections/PropertyTypeTokensTest.php +++ b/Tests/Tokens/Collections/PropertyTypeTokensTest.php @@ -10,6 +10,7 @@ namespace PHPCSUtils\Tests\Tokens\Collections; +use PHPCSUtils\BackCompat\Helper; use PHPCSUtils\Tokens\Collections; use PHPUnit\Framework\TestCase; @@ -32,6 +33,7 @@ class PropertyTypeTokensTest extends TestCase */ public function testPropertyTypeTokens() { + $version = Helper::getVersion(); $expected = [ \T_CALLABLE => \T_CALLABLE, \T_SELF => \T_SELF, @@ -44,7 +46,10 @@ public function testPropertyTypeTokens() \T_STRING => \T_STRING, ]; - if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true) { + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + || (\version_compare($version, '3.5.7', '>=') === true + && \version_compare($version, '4.0.0', '<') === true) + ) { $expected[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; $expected[\T_NAME_FULLY_QUALIFIED] = \T_NAME_FULLY_QUALIFIED; $expected[\T_NAME_RELATIVE] = \T_NAME_RELATIVE; diff --git a/Tests/Tokens/Collections/ReturnTypeTokensTest.php b/Tests/Tokens/Collections/ReturnTypeTokensTest.php index f9423344..d82bf20c 100644 --- a/Tests/Tokens/Collections/ReturnTypeTokensTest.php +++ b/Tests/Tokens/Collections/ReturnTypeTokensTest.php @@ -10,6 +10,7 @@ namespace PHPCSUtils\Tests\Tokens\Collections; +use PHPCSUtils\BackCompat\Helper; use PHPCSUtils\Tokens\Collections; use PHPUnit\Framework\TestCase; @@ -32,6 +33,7 @@ class ReturnTypeTokensTest extends TestCase */ public function testReturnTypeTokens() { + $version = Helper::getVersion(); $expected = [ \T_CALLABLE => \T_CALLABLE, \T_SELF => \T_SELF, @@ -46,7 +48,10 @@ public function testReturnTypeTokens() \T_STRING => \T_STRING, ]; - if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true) { + if (\version_compare(\PHP_VERSION_ID, '80000', '>=') === true + || (\version_compare($version, '3.5.7', '>=') === true + && \version_compare($version, '4.0.0', '<') === true) + ) { $expected[\T_NAME_QUALIFIED] = \T_NAME_QUALIFIED; $expected[\T_NAME_FULLY_QUALIFIED] = \T_NAME_FULLY_QUALIFIED; $expected[\T_NAME_RELATIVE] = \T_NAME_RELATIVE;