From 93e703a01ab1b448a633d24036ad8eb963e2cd8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 17:46:07 +0100 Subject: [PATCH 01/46] PHP 8.1: Squiz/ValidVariableName - Added tests for enums support --- .../NamingConventions/ValidVariableNameUnitTest.inc | 9 +++++++++ .../NamingConventions/ValidVariableNameUnitTest.php | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc b/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc index c7b8a2b6b2..87c3bdf2e7 100644 --- a/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc +++ b/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc @@ -146,3 +146,12 @@ echo $obj?->varName; echo $obj?->var_name; echo $obj?->varname; echo $obj?->_varName; + +enum SomeEnum +{ + public function foo($foo, $_foo, $foo_bar) { + $bar = 1; + $_bar = 2; + $bar_foo = 3; + } +} diff --git a/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php b/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php index aaa9d099a7..9acbe241a8 100644 --- a/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php +++ b/src/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php @@ -61,6 +61,8 @@ public function getErrorList() 138 => 1, 141 => 1, 146 => 1, + 152 => 1, + 155 => 1, ]; return $errors; From be50d2768b38fbef8040f7c6c1f15ff490345a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 17:48:36 +0100 Subject: [PATCH 02/46] PHP 8.1: Zend/ValidVariableName - Added tests for enums support --- .../NamingConventions/ValidVariableNameUnitTest.inc | 9 +++++++++ .../NamingConventions/ValidVariableNameUnitTest.php | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc b/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc index 8ed8509d2a..3325e1152d 100644 --- a/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc +++ b/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc @@ -120,3 +120,12 @@ $anonClass = new class() { echo $obj?->varName; echo $obj?->var_name; echo $obj?->varName; + +enum SomeEnum +{ + public function foo($foo, $_foo, $foo_bar) { + $bar = 1; + $_bar = 2; + $bar_foo = 3; + } +} diff --git a/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php b/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php index 916b334f1c..e57c735646 100644 --- a/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php +++ b/src/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php @@ -54,6 +54,8 @@ public function getErrorList() 113 => 1, 116 => 1, 121 => 1, + 126 => 1, + 129 => 1, ]; }//end getErrorList() From c47ca1d335fb1f0c611d2270061e5519b613f33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 17:52:43 +0100 Subject: [PATCH 03/46] PHP 8.1: Squiz/MemberVarSpacing - Added test for enums support --- .../Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc | 7 +++++++ .../Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc index 038072dfe0..12b55176c4 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc +++ b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc @@ -365,3 +365,10 @@ class HasAttributes #[ThirdAttribute] protected $propertyWithoutSpacing; } + +enum SomeEnum +{ + // Enum cannot have properties + + case ONE = 'one'; +} diff --git a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed index 3cb2ca3a48..d683eaadfb 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc.fixed @@ -350,3 +350,10 @@ class HasAttributes #[ThirdAttribute] protected $propertyWithoutSpacing; } + +enum SomeEnum +{ + // Enum cannot have properties + + case ONE = 'one'; +} From 2d5939826c0b8a5273d4a56404570d224b2e8e01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 17:55:57 +0100 Subject: [PATCH 04/46] PHP 8.1: Squiz/MethodScope - Added tests for enums support --- src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc | 8 ++++++++ src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php | 1 + 2 files changed, 9 insertions(+) diff --git a/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc b/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc index cec0355c43..bc77d46d1d 100644 --- a/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc +++ b/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc @@ -40,3 +40,11 @@ class Nested { }; } } + +enum SomeEnum +{ + function func1() {} + public function func1() {} + private function func1() {} + protected function func1() {} +} diff --git a/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php b/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php index 7fdab23b77..4dc7177953 100644 --- a/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php +++ b/src/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php @@ -29,6 +29,7 @@ public function getErrorList() 6 => 1, 30 => 1, 39 => 1, + 46 => 1, ]; }//end getErrorList() From 45d953ac8b509cb256dfdafb462a7c22995c0580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:00:10 +0100 Subject: [PATCH 05/46] PHP 8.1: Squiz/NonExecutableCode - Added test for enums support --- .../Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc | 6 ++++++ src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc index 407c4740b1..6435bd0663 100644 --- a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc +++ b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc @@ -45,6 +45,12 @@ trait Something { } } +enum Something { + function getReturnType() { + echo 'no error'; + } +} + $a = new class { public function log($msg) { diff --git a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php index f66eb3f7fe..f5f90c0b92 100644 --- a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php +++ b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php @@ -83,7 +83,7 @@ public function getWarningList($testFile='') 9 => 1, 10 => 2, 14 => 1, - 48 => 2, + 54 => 2, ]; break; default: From e3b93c5964de1ff76a17775a98863c700ae5755d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:03:35 +0100 Subject: [PATCH 06/46] PHP 8.1: Squiz/LowercaseClassKeywords - Added test for enums support --- .../Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc | 1 + .../Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed | 1 + .../Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php | 5 +++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc index 511bbe4710..758fcaf2a8 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc @@ -3,6 +3,7 @@ Abstract Class MyClass Extends MyClass {} Final Class MyClass Implements MyInterface {} Interface MyInterface {} Trait MyTrait {} +Enum MyEnum {} class MyClass { diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed index 859d0d2db2..fad6c7c5a2 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed @@ -3,6 +3,7 @@ abstract class MyClass extends MyClass {} final class MyClass implements MyInterface {} interface MyInterface {} trait MyTrait {} +enum MyEnum {} class MyClass { diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php index f2fc20b438..47e4b3da4f 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php @@ -30,9 +30,10 @@ public function getErrorList() 3 => 3, 4 => 1, 5 => 1, - 9 => 1, + 6 => 1, 10 => 1, - 13 => 1, + 11 => 1, + 14 => 1, ]; return $errors; From bbe14b0f777d2627ed430561e5516f5cfd4daeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:05:43 +0100 Subject: [PATCH 07/46] PHP 8.1: PSR2/MethodDeclaration - Added tests for enums support --- .../PSR2/Tests/Methods/MethodDeclarationUnitTest.inc | 9 +++++++++ .../Tests/Methods/MethodDeclarationUnitTest.inc.fixed | 9 +++++++++ .../PSR2/Tests/Methods/MethodDeclarationUnitTest.php | 2 ++ 3 files changed, 20 insertions(+) diff --git a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc index 21c03119dd..096b44bc8a 100644 --- a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc +++ b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc @@ -64,3 +64,12 @@ class Nested_Function { }; } } + +enum MyEnum +{ + function _myFunction() {} + function __myFunction() {} + public static function myFunction() {} + static public function myFunction() {} + public function _() {} +} diff --git a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc.fixed b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc.fixed index 5fb88613ed..eae8d28f5c 100644 --- a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc.fixed +++ b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc.fixed @@ -64,3 +64,12 @@ class Nested_Function { }; } } + +enum MyEnum +{ + function _myFunction() {} + function __myFunction() {} + public static function myFunction() {} + public static function myFunction() {} + public function _() {} +} diff --git a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php index 2d508d4c62..a8dcdfea58 100644 --- a/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php +++ b/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php @@ -40,6 +40,7 @@ public function getErrorList() 54 => 1, 56 => 3, 63 => 2, + 73 => 1, ]; }//end getErrorList() @@ -61,6 +62,7 @@ public function getWarningList() 30 => 1, 46 => 1, 63 => 1, + 70 => 1, ]; }//end getWarningList() From 1e8d2b565df28ebdfaa646dbe97f12c726a76025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:11:19 +0100 Subject: [PATCH 08/46] PHP 8.1: PSR12/UseDeclaration - Added tests for enums support --- .../PSR12/Tests/Traits/UseDeclarationUnitTest.inc | 11 +++++++++++ .../Tests/Traits/UseDeclarationUnitTest.inc.fixed | 10 ++++++++++ .../PSR12/Tests/Traits/UseDeclarationUnitTest.php | 1 + 3 files changed, 22 insertions(+) diff --git a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc index e62489fe03..c3cc6348a1 100644 --- a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc +++ b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc @@ -207,3 +207,14 @@ class Foo implements Bar */ use Baz; } + +enum SomeEnum1 +{ + use FirstTrait; +} + +enum SomeEnum2 +{ + use FirstTrait; + +} diff --git a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc.fixed b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc.fixed index 0090b4e931..1c5d8185c0 100644 --- a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc.fixed +++ b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc.fixed @@ -201,3 +201,13 @@ class Foo implements Bar */ use Baz; } + +enum SomeEnum1 +{ + use FirstTrait; +} + +enum SomeEnum2 +{ + use FirstTrait; +} diff --git a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php index c406805a9b..196fbc49c7 100644 --- a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php +++ b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php @@ -47,6 +47,7 @@ public function getErrorList() 165 => 1, 170 => 1, 208 => 1, + 218 => 1, ]; }//end getErrorList() From 2df2ae223d4b4bc3605fce0d4fe9214e35b465d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:13:08 +0100 Subject: [PATCH 09/46] PHP 8.1: PSR12/ConstantVisibility - Added tests for enums support --- .../PSR12/Tests/Properties/ConstantVisibilityUnitTest.inc | 5 +++++ .../PSR12/Tests/Properties/ConstantVisibilityUnitTest.php | 1 + 2 files changed, 6 insertions(+) diff --git a/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.inc b/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.inc index 88d2a92c34..84ea24b2e8 100644 --- a/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.inc +++ b/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.inc @@ -15,3 +15,8 @@ class SampleEnum final private const BAZ = 'SAMPLE'; } + +enum SomeEnum { + public const BAR = 'bar'; + const BAZ = 'baz'; +} diff --git a/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.php b/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.php index a4236b41ea..b738706da2 100644 --- a/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.php +++ b/src/Standards/PSR12/Tests/Properties/ConstantVisibilityUnitTest.php @@ -43,6 +43,7 @@ public function getWarningList() return [ 4 => 1, 12 => 1, + 21 => 1, ]; }//end getWarningList() From b8b3a5b29b6b44e74fa93c63c44cf401ebb26a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:16:58 +0100 Subject: [PATCH 10/46] PHP 8.1: PSR12/ImportStatement - Added test for enums support --- .../PSR12/Tests/Files/ImportStatementUnitTest.inc | 7 +++++++ .../PSR12/Tests/Files/ImportStatementUnitTest.inc.fixed | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc b/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc index 904e3f4080..6d024eaa95 100644 --- a/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc +++ b/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc @@ -17,3 +17,10 @@ class ClassName3 } $foo = function() use($bar) {}; + +enum SomeEnum +{ + use \FirstTrait; + use SecondTrait; + use ThirdTrait; +} diff --git a/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc.fixed b/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc.fixed index d5b3f67eed..dfed46fc17 100644 --- a/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc.fixed +++ b/src/Standards/PSR12/Tests/Files/ImportStatementUnitTest.inc.fixed @@ -17,3 +17,10 @@ class ClassName3 } $foo = function() use($bar) {}; + +enum SomeEnum +{ + use \FirstTrait; + use SecondTrait; + use ThirdTrait; +} From 3fe3fc16fe9ec759d39027ed2c3c2ac30571f0de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:22:34 +0100 Subject: [PATCH 11/46] PHP 8.1: File::getDeclarationName() supports enums --- src/Files/File.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Files/File.php b/src/Files/File.php index 864c9424ba..e00ba7117b 100644 --- a/src/Files/File.php +++ b/src/Files/File.php @@ -1232,7 +1232,7 @@ public function getFilename() * or NULL if the function or class is anonymous. * @throws \PHP_CodeSniffer\Exceptions\RuntimeException If the specified token is not of type * T_FUNCTION, T_CLASS, T_ANON_CLASS, - * T_CLOSURE, T_TRAIT, or T_INTERFACE. + * T_CLOSURE, T_TRAIT, T_ENUM, or T_INTERFACE. */ public function getDeclarationName($stackPtr) { @@ -1246,8 +1246,9 @@ public function getDeclarationName($stackPtr) && $tokenCode !== T_CLASS && $tokenCode !== T_INTERFACE && $tokenCode !== T_TRAIT + && $tokenCode !== T_ENUM ) { - throw new RuntimeException('Token type "'.$this->tokens[$stackPtr]['type'].'" is not T_FUNCTION, T_CLASS, T_INTERFACE or T_TRAIT'); + throw new RuntimeException('Token type "'.$this->tokens[$stackPtr]['type'].'" is not T_FUNCTION, T_CLASS, T_INTERFACE, T_TRAIT or T_ENUM'); } if ($tokenCode === T_FUNCTION From 8f4a6cf662799ebd0cdb428a4e971a72e7f2c908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:24:08 +0100 Subject: [PATCH 12/46] PHP 8.1: PEAR/ValidFunctionName - Added tests for enums support --- .../Tests/NamingConventions/ValidFunctionNameUnitTest.inc | 5 +++++ .../Tests/NamingConventions/ValidFunctionNameUnitTest.php | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc index 78280cdd90..e89aea6078 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc @@ -220,3 +220,8 @@ abstract class My_Class { public function my_class() {} public function _MY_CLASS() {} } + +enum My_Enum { + public function my_class() {} + public function _MY_CLASS() {} +} diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php index 9bb6de0d84..26f9775bcb 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php @@ -122,6 +122,8 @@ public function getErrorList() 212 => 1, 213 => 1, 214 => 1, + 225 => 1, + 226 => 2, ]; }//end getErrorList() From 7e0d1e99fc2eef05cbe9ddefb64c84a1b3679e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:25:48 +0100 Subject: [PATCH 13/46] PHP 8.1: Generic/CamelCapsFunctionName - Added tests for enums support --- .../NamingConventions/CamelCapsFunctionNameUnitTest.inc | 5 +++++ .../NamingConventions/CamelCapsFunctionNameUnitTest.php | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc index 9bda11472e..f9a9885b3a 100644 --- a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc +++ b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc @@ -165,3 +165,8 @@ abstract class My_Class { public function my_class() {} public function _MY_CLASS() {} } + +enum My_Enum { + public function my_class() {} + public function _MY_CLASS() {} +} diff --git a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php index 502498d8bc..839c30243e 100644 --- a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php +++ b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php @@ -63,6 +63,8 @@ public function getErrorList() 147 => 2, 158 => 1, 159 => 1, + 170 => 1, + 171 => 1, ]; return $errors; From 7bd83afc2b1f40a445784a6d1aecae605784dae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:29:38 +0100 Subject: [PATCH 14/46] PHP 8.1: Generic/DuplicateClassName - Added support for enums --- .../Generic/Sniffs/Classes/DuplicateClassNameSniff.php | 1 + .../Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc | 4 +++- .../Generic/Tests/Classes/DuplicateClassNameUnitTest.php | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php b/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php index 8374bfd535..3243f8b7dc 100644 --- a/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php +++ b/src/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php @@ -53,6 +53,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, T_NAMESPACE, T_CLOSE_TAG, ]; diff --git a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc index d0c136cbfa..38ddef181e 100644 --- a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc +++ b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc @@ -4,8 +4,10 @@ class YourClass {} interface MyInterface {} interface YourInterface {} trait MyTrait {} +enum MyEnum {} trait YourTrait {} class MyClass {} interface MyInterface {} trait MyTrait {} -?> \ No newline at end of file +enum MyEnum {} +?> diff --git a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php index b3b3edb502..6caaf873c3 100644 --- a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php +++ b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php @@ -45,9 +45,10 @@ public function getWarningList($testFile='') switch ($testFile) { case 'DuplicateClassNameUnitTest.1.inc': return [ - 8 => 1, 9 => 1, 10 => 1, + 11 => 1, + 12 => 1, ]; break; case 'DuplicateClassNameUnitTest.2.inc': From 8a746106a4321d565e8ae537946b5bfc9b1de4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:32:56 +0100 Subject: [PATCH 15/46] PHP 8.1: Generic/OpeningBraceSameLine - Added support for enums --- .../Generic/Sniffs/Classes/OpeningBraceSameLineSniff.php | 1 + .../Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc | 4 ++++ .../Tests/Classes/OpeningBraceSameLineUnitTest.inc.fixed | 4 ++++ .../Generic/Tests/Classes/OpeningBraceSameLineUnitTest.php | 1 + 4 files changed, 10 insertions(+) diff --git a/src/Standards/Generic/Sniffs/Classes/OpeningBraceSameLineSniff.php b/src/Standards/Generic/Sniffs/Classes/OpeningBraceSameLineSniff.php index fb92d82c08..dfd925f918 100644 --- a/src/Standards/Generic/Sniffs/Classes/OpeningBraceSameLineSniff.php +++ b/src/Standards/Generic/Sniffs/Classes/OpeningBraceSameLineSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc index 8147b4c73e..fd3abc030e 100644 --- a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc +++ b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc @@ -89,3 +89,7 @@ class Test_Class_Bad_G /*some comment*/ { } + +enum Test_Enum +{ +} diff --git a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc.fixed b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc.fixed index 406eb230fd..a755ae4725 100644 --- a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc.fixed +++ b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.inc.fixed @@ -89,3 +89,7 @@ class Test_Class_Bad_G /*some comment*/ { } + +enum Test_Enum { + +} diff --git a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.php b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.php index 61cd4c9e8f..c357afc927 100644 --- a/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.php +++ b/src/Standards/Generic/Tests/Classes/OpeningBraceSameLineUnitTest.php @@ -38,6 +38,7 @@ public function getErrorList() 70 => 1, 79 => 1, 90 => 1, + 94 => 1, ]; }//end getErrorList() From ef2172be9fb78dca7bcdf73edafc3dd23116a908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:34:46 +0100 Subject: [PATCH 16/46] PHP 8.1: Generic/OneObjectStructurePerFile - Added support for enums --- .../Sniffs/Files/OneObjectStructurePerFileSniff.php | 1 + .../Tests/Files/OneObjectStructurePerFileUnitTest.inc | 9 +++++++-- .../Tests/Files/OneObjectStructurePerFileUnitTest.php | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Standards/Generic/Sniffs/Files/OneObjectStructurePerFileSniff.php b/src/Standards/Generic/Sniffs/Files/OneObjectStructurePerFileSniff.php index d9d71b6996..939086d3f0 100644 --- a/src/Standards/Generic/Sniffs/Files/OneObjectStructurePerFileSniff.php +++ b/src/Standards/Generic/Sniffs/Files/OneObjectStructurePerFileSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.inc b/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.inc index 94cebb4ee2..9f76d5d8d0 100644 --- a/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.inc +++ b/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.inc @@ -12,10 +12,15 @@ class baz { } trait barTrait { - + } interface barInterface { } -?> \ No newline at end of file + +enum barEnum { + +} + +?> diff --git a/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.php b/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.php index f429f98095..36a4bb9385 100644 --- a/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.php +++ b/src/Standards/Generic/Tests/Files/OneObjectStructurePerFileUnitTest.php @@ -30,6 +30,7 @@ public function getErrorList() 10 => 1, 14 => 1, 18 => 1, + 22 => 1, ]; }//end getErrorList() From c9e014476f75af966dc2eca9866c07bb8456c61a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:36:42 +0100 Subject: [PATCH 17/46] PHP 8.1: Generic/LowerCaseKeyword - Added support for enums --- src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php | 1 + src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc | 3 +++ .../Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed | 3 +++ src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php | 1 + 4 files changed, 8 insertions(+) diff --git a/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php b/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php index 2ddf314a02..f26b6b53ec 100644 --- a/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php +++ b/src/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php @@ -50,6 +50,7 @@ public function register() T_ENDIF, T_ENDSWITCH, T_ENDWHILE, + T_ENUM, T_EVAL, T_EXIT, T_EXTENDS, diff --git a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc index 6c3e3f9a21..1566b6e017 100644 --- a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc +++ b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc @@ -39,5 +39,8 @@ class Reading { Public READOnly int $var; } +EnuM Enum { +} + __HALT_COMPILER(); // An exception due to phar support. function diff --git a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed index 1c8550387b..690b7c5eed 100644 --- a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed +++ b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc.fixed @@ -39,5 +39,8 @@ class Reading { public readonly int $var; } +enum Enum { +} + __HALT_COMPILER(); // An exception due to phar support. function diff --git a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php index bf859e7fb9..e551149226 100644 --- a/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php +++ b/src/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php @@ -41,6 +41,7 @@ public function getErrorList() 32 => 1, 35 => 1, 39 => 2, + 42 => 1, ]; }//end getErrorList() From 6a323824a9e26b76d63e947a2d431f646b562e2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:41:44 +0100 Subject: [PATCH 18/46] PHP 8.1: PEAR/ClassDeclaration - Added support for enums --- src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php | 1 + .../PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc | 2 ++ .../PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc.fixed | 4 ++++ src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php | 1 + 4 files changed, 8 insertions(+) diff --git a/src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php b/src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php index a5b07a9e47..dbd61f3d23 100644 --- a/src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php +++ b/src/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc index d97ef4d29d..6942944b5c 100644 --- a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc +++ b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc @@ -110,3 +110,5 @@ if (!class_exists('ClassOpeningBraceTooMuchIndentation')) { { } } + +enum IncorrectBracePlacement {} diff --git a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc.fixed b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc.fixed index 5b0a2f93fb..26688b1527 100644 --- a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc.fixed +++ b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.1.inc.fixed @@ -119,3 +119,7 @@ if (!class_exists('ClassOpeningBraceTooMuchIndentation')) { { } } + +enum IncorrectBracePlacement +{ +} diff --git a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php index 1514a70378..4c1d28e733 100644 --- a/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php +++ b/src/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php @@ -61,6 +61,7 @@ public function getErrorList($testFile='') 99 => 1, 104 => 1, 110 => 1, + 114 => 1, ]; default: From 209d417cb6e0eae8a328fe9c9958a4937b9d4e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:45:44 +0100 Subject: [PATCH 19/46] PHP 8.1: PEAR/ClassComment - Added support for enums --- .../PEAR/Sniffs/Commenting/ClassCommentSniff.php | 1 + .../PEAR/Tests/Commenting/ClassCommentUnitTest.inc | 10 ++++++++++ .../PEAR/Tests/Commenting/ClassCommentUnitTest.php | 1 + 3 files changed, 12 insertions(+) diff --git a/src/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php b/src/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php index ac3351e02b..a01ea2cc7e 100644 --- a/src/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php +++ b/src/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc b/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc index 8414efbedb..da53b99e87 100644 --- a/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc +++ b/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc @@ -120,6 +120,16 @@ trait Empty_Trait_Doc }//end trait +/** + * + * + */ +enum Empty_Enum_Doc +{ + +}//end enum + + /** * Sample class comment * diff --git a/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php b/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php index 9a4bcf7dd6..004a064b35 100644 --- a/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php +++ b/src/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php @@ -44,6 +44,7 @@ public function getErrorList() 96 => 5, 106 => 5, 116 => 5, + 126 => 5, ]; }//end getErrorList() From ad369a10a1a609636c3c5a167008daa5f75b4fb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:51:03 +0100 Subject: [PATCH 20/46] PHP 8.1: PEAR/FileComment - Added support for enums --- package.xml | 1 + src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php | 1 + .../PEAR/Tests/Commenting/FileCommentUnitTest.3.inc | 8 ++++++++ .../PEAR/Tests/Commenting/FileCommentUnitTest.php | 3 +++ 4 files changed, 13 insertions(+) create mode 100644 src/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.3.inc diff --git a/package.xml b/package.xml index 1f1511cf3e..1f449f114e 100644 --- a/package.xml +++ b/package.xml @@ -1012,6 +1012,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php b/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php index e0672ffe3a..6a44584686 100644 --- a/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php +++ b/src/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php @@ -161,6 +161,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, T_FUNCTION, T_CLOSURE, T_PUBLIC, diff --git a/src/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.3.inc b/src/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.3.inc new file mode 100644 index 0000000000..c076fd4572 --- /dev/null +++ b/src/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.3.inc @@ -0,0 +1,8 @@ + 1]; + case 'FileCommentUnitTest.3.inc': + return [1 => 1]; + default: return []; }//end switch From bc00f4c1d5ae0f838110c3c0b373247efc0f98c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:53:39 +0100 Subject: [PATCH 21/46] PHP 8.1: PEAR/ValidClassName - Added support for enums --- .../NamingConventions/ValidClassNameSniff.php | 1 + .../ValidClassNameUnitTest.inc | 22 +++++++++++++++++++ .../ValidClassNameUnitTest.php | 6 +++++ 3 files changed, 29 insertions(+) diff --git a/src/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php b/src/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php index 34ca2830b5..00e68bfec5 100644 --- a/src/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php +++ b/src/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc index c6d15df7f0..bc0e92a1d5 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc @@ -66,3 +66,25 @@ trait _Invalid_Name {} trait ___ {} trait Invalid__Name {} + +enum Valid_Name {} + +enum invalid_Name {} + +enum invalid_name {} + +enum Invalid_name {} + +enum VALID_Name {} + +enum VALID_NAME {} + +enum VALID_Name {} + +enum ValidName {} + +enum _Invalid_Name {} + +enum ___ {} + +enum Invalid__Name {} diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php index 8ff9c674b2..54ee74aac1 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php @@ -44,6 +44,12 @@ public function getErrorList() 64 => 1, 66 => 2, 68 => 1, + 72 => 1, + 74 => 2, + 76 => 1, + 86 => 1, + 88 => 2, + 90 => 1, ]; }//end getErrorList() From 6c96e557c0a3166a434841b8ecb4798dd79ec9cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:55:19 +0100 Subject: [PATCH 22/46] PHP 8.1: PSR12/ClosingBrace - Added support for enums --- src/Standards/PSR12/Sniffs/Classes/ClosingBraceSniff.php | 1 + src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.inc | 5 +++++ src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.php | 1 + 3 files changed, 7 insertions(+) diff --git a/src/Standards/PSR12/Sniffs/Classes/ClosingBraceSniff.php b/src/Standards/PSR12/Sniffs/Classes/ClosingBraceSniff.php index 0f9752b1f4..fa1f8d60ed 100644 --- a/src/Standards/PSR12/Sniffs/Classes/ClosingBraceSniff.php +++ b/src/Standards/PSR12/Sniffs/Classes/ClosingBraceSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, T_FUNCTION, ]; diff --git a/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.inc b/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.inc index 1d2e92c97e..2562d26c06 100644 --- a/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.inc +++ b/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.inc @@ -45,3 +45,8 @@ $instance = new class extends \Foo implements \HandleableInterface { $app->get('/hello/{name}', function ($name) use ($app) { return 'Hello ' . $app->escape($name); }); + +enum Foo4 +{ + +}//end diff --git a/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.php b/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.php index 1deac1cdf5..d402f1bb94 100644 --- a/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.php +++ b/src/Standards/PSR12/Tests/Classes/ClosingBraceUnitTest.php @@ -31,6 +31,7 @@ public function getErrorList() 19 => 1, 24 => 1, 31 => 1, + 52 => 1, ]; }//end getErrorList() From 7beba375b5f807ce967b20e900fc08dff1ccf416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 18:58:32 +0100 Subject: [PATCH 23/46] PHP 8.1: PSR1/ClassDeclaration - Added support for enums --- package.xml | 1 + src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php | 5 +++-- .../PSR1/Tests/Classes/ClassDeclarationUnitTest.3.inc | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.3.inc diff --git a/package.xml b/package.xml index 1f449f114e..69598e10a6 100644 --- a/package.xml +++ b/package.xml @@ -1101,6 +1101,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php b/src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php index ac6407d6f1..3db26f6fd1 100644 --- a/src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php +++ b/src/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() @@ -50,7 +51,7 @@ public function process(File $phpcsFile, $stackPtr) $errorData = [strtolower($tokens[$stackPtr]['content'])]; - $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT], ($tokens[$stackPtr]['scope_closer'] + 1)); + $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT, T_ENUM], ($tokens[$stackPtr]['scope_closer'] + 1)); if ($nextClass !== false) { $error = 'Each %s must be in a file by itself'; $phpcsFile->addError($error, $nextClass, 'MultipleClasses', $errorData); @@ -59,7 +60,7 @@ public function process(File $phpcsFile, $stackPtr) $phpcsFile->recordMetric($stackPtr, 'One class per file', 'yes'); } - $namespace = $phpcsFile->findNext([T_NAMESPACE, T_CLASS, T_INTERFACE, T_TRAIT], 0); + $namespace = $phpcsFile->findNext([T_NAMESPACE, T_CLASS, T_INTERFACE, T_TRAIT, T_ENUM], 0); if ($tokens[$namespace]['code'] !== T_NAMESPACE) { $error = 'Each %s must be in a namespace of at least one level (a top-level vendor name)'; $phpcsFile->addError($error, $stackPtr, 'MissingNamespace', $errorData); diff --git a/src/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.3.inc b/src/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.3.inc new file mode 100644 index 0000000000..302908eb12 --- /dev/null +++ b/src/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.3.inc @@ -0,0 +1,3 @@ + Date: Sat, 20 Nov 2021 19:04:00 +0100 Subject: [PATCH 24/46] PHP 8.1: PSR1/SideEffects - Added support for enums --- src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php | 1 + src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php b/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php index 27454cc1d7..3f8c5e0d56 100644 --- a/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php +++ b/src/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php @@ -82,6 +82,7 @@ private function searchForConflict($phpcsFile, $start, $end, $tokens) T_CLASS => T_CLASS, T_INTERFACE => T_INTERFACE, T_TRAIT => T_TRAIT, + T_ENUM => T_ENUM, T_FUNCTION => T_FUNCTION, ]; diff --git a/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc b/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc index 596d6cf9b0..ca538823c1 100644 --- a/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc +++ b/src/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc @@ -6,6 +6,7 @@ const CONSTANT2 = 2; use Something; use SomethingElse; +use function interface_exists; declare(ticks=1); @@ -63,6 +64,11 @@ if (!interface_exists('MyInterface')) { interface MyInterface {} } +if (!interface_exists('MyEnum')) { + // Define an enum. + enum MyEnum {} +} + #[\Attribute] namespace { class A {} From b2b38ed1f6af134d2efda2debfc6d4d8790a263b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:06:08 +0100 Subject: [PATCH 25/46] PHP 8.1: PSR2/UseDeclaration - Added support for enums --- .../PSR2/Sniffs/Namespaces/UseDeclarationSniff.php | 2 +- .../PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php b/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php index 21a9dbe9a3..aba9caa717 100644 --- a/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php +++ b/src/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php @@ -285,7 +285,7 @@ private function shouldIgnoreUse($phpcsFile, $stackPtr) } // Ignore USE keywords for traits. - if ($phpcsFile->hasCondition($stackPtr, [T_CLASS, T_TRAIT]) === true) { + if ($phpcsFile->hasCondition($stackPtr, [T_CLASS, T_TRAIT, T_ENUM]) === true) { return true; } diff --git a/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc b/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc index c4e83da440..61befc9e73 100644 --- a/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc +++ b/src/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc @@ -30,9 +30,14 @@ trait HelloWorld use Hello, World; } +enum SomeEnum +{ + use Hello, World; +} + $x = $foo ? function ($foo) use /* comment */ ($bar): int { return 1; } : $bar; // Testcase must be on last line in the file. -use \ No newline at end of file +use From 313d9dbae6893775fdd05f2e2710448bd860c032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:10:23 +0100 Subject: [PATCH 26/46] PHP 8.1: Squiz/ClassFileName - Added support for enums --- .../Squiz/Sniffs/Classes/ClassFileNameSniff.php | 1 + .../Squiz/Tests/Classes/ClassFileNameUnitTest.inc | 10 +++++++++- .../Squiz/Tests/Classes/ClassFileNameUnitTest.php | 15 +++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php b/src/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php index afbec4fa7e..88a7e0daae 100644 --- a/src/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php +++ b/src/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php @@ -27,6 +27,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc index a346a00f21..204374f396 100644 --- a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc @@ -5,6 +5,7 @@ class ClassFileNameUnitTest {} interface ClassFileNameUnitTest {} trait ClassFileNameUnitTest {} +enum ClassFileNameUnitTest {} // Invalid filename matching class name (case sensitive). @@ -17,6 +18,9 @@ interface CLASSFILENAMEUNITTEST {} trait classFileNameUnitTest {} trait classfilenameunittest {} trait CLASSFILENAMEUNITTEST {} +enum classFileNameUnitTest {} +enum classfilenameunittest {} +enum CLASSFILENAMEUNITTEST {} // Invalid non-filename matching class names. @@ -32,6 +36,10 @@ trait CompletelyWrongClassName {} trait ClassFileNameUnitTestExtra {} trait ClassFileNameUnitTestInc {} trait ExtraClassFileNameUnitTest {} +enum CompletelyWrongClassName {} +enum ClassFileNameUnitTestExtra {} +enum ClassFileNameUnitTestInc {} +enum ExtraClassFileNameUnitTest {} -?> \ No newline at end of file +?> diff --git a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php index b229a2fc3f..5964d2b1ec 100644 --- a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php +++ b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php @@ -26,7 +26,6 @@ class ClassFileNameUnitTest extends AbstractSniffUnitTest public function getErrorList() { return [ - 11 => 1, 12 => 1, 13 => 1, 14 => 1, @@ -35,10 +34,10 @@ public function getErrorList() 17 => 1, 18 => 1, 19 => 1, + 20 => 1, + 21 => 1, + 22 => 1, 23 => 1, - 24 => 1, - 25 => 1, - 26 => 1, 27 => 1, 28 => 1, 29 => 1, @@ -47,6 +46,14 @@ public function getErrorList() 32 => 1, 33 => 1, 34 => 1, + 35 => 1, + 36 => 1, + 37 => 1, + 38 => 1, + 39 => 1, + 40 => 1, + 41 => 1, + 42 => 1, ]; }//end getErrorList() From ed1e5a87452b43e8245eb2d4e73ed85057268fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:12:53 +0100 Subject: [PATCH 27/46] PHP 8.1: Squiz/ValidClassName - Added support for enums --- .../Sniffs/Classes/ValidClassNameSniff.php | 1 + .../Tests/Classes/ValidClassNameUnitTest.inc | 44 +++++++++++++++++++ .../Tests/Classes/ValidClassNameUnitTest.php | 5 +++ 3 files changed, 50 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php b/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php index 10de719dca..8d45c86e0c 100644 --- a/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php +++ b/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php @@ -28,6 +28,7 @@ public function register() T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, ]; }//end register() diff --git a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc index aadbab5b8e..62a769a034 100644 --- a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc @@ -137,6 +137,50 @@ trait Base } } +// Valid enum name. +enum ValidCamelCaseClass {} + + +// Incorrect usage of camel case. +enum invalidCamelCaseClass {} +enum Invalid_Camel_Case_Class_With_Underscores {} + + +// All lowercase. +enum invalidlowercaseclass {} +enum invalid_lowercase_class_with_underscores {} + + +// All uppercase. +enum VALIDUPPERCASECLASS {} +enum INVALID_UPPERCASE_CLASS_WITH_UNDERSCORES {} + + +// Mix camel case with uppercase. +enum ValidCamelCaseClassWithUPPERCASE {} + + +// Usage of numeric characters. +enum ValidCamelCaseClassWith1Number {} +enum ValidCamelCaseClassWith12345Numbers {} +enum ValidCamelCaseClassEndingWithNumber5 {} + +enum Testing{} + +enum Base +{ + public function __construct() + { + $this->anonymous = new class extends ArrayObject + { + public function __construct() + { + parent::__construct(['a' => 1, 'b' => 2]); + } + }; + } +} + if ( class_exists( Test :: class ) ) {} if ( class_exists( Test2 ::class ) ) {} diff --git a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php index 70777c541b..b7de260b65 100644 --- a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php +++ b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php @@ -47,6 +47,11 @@ public function getErrorList() 108 => 1, 118 => 1, 120 => 1, + 145 => 1, + 146 => 1, + 150 => 1, + 151 => 1, + 156 => 1, ]; }//end getErrorList() From 25318a958be00064913230aafc88362a56fced66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:19:03 +0100 Subject: [PATCH 28/46] PHP 8.1: Squiz/BlockComment - Enums should be ignored --- .../Squiz/Sniffs/Commenting/BlockCommentSniff.php | 1 + .../Squiz/Tests/Commenting/BlockCommentUnitTest.inc | 8 ++++++++ .../Squiz/Tests/Commenting/BlockCommentUnitTest.inc.fixed | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php b/src/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php index d59fe1e113..eb647f5fe7 100644 --- a/src/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php +++ b/src/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php @@ -84,6 +84,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS => true, T_INTERFACE => true, T_TRAIT => true, + T_ENUM => true, T_FUNCTION => true, T_PUBLIC => true, T_PRIVATE => true, diff --git a/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc b/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc index b25de27679..7cd04a2114 100644 --- a/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc +++ b/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc @@ -299,3 +299,11 @@ abstract class MyClass */ readonly public string $prop; } + +/** + * Comment should be ignored + * + */ +enum MyEnum { + +} diff --git a/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc.fixed b/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc.fixed index e1e821bf56..2e97614e2c 100644 --- a/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc.fixed @@ -301,3 +301,11 @@ abstract class MyClass */ readonly public string $prop; } + +/** + * Comment should be ignored + * + */ +enum MyEnum { + +} From 18d03c481b8cb8dcc000eca780ce2738f3327973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:22:17 +0100 Subject: [PATCH 29/46] PHP 8.1: Squiz/FileComment - Added support for enums --- package.xml | 1 + .../Squiz/Sniffs/Commenting/FileCommentSniff.php | 1 + .../Squiz/Tests/Commenting/FileCommentUnitTest.9.inc | 12 ++++++++++++ .../Squiz/Tests/Commenting/FileCommentUnitTest.php | 1 + 4 files changed, 15 insertions(+) create mode 100644 src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.9.inc diff --git a/package.xml b/package.xml index 69598e10a6..38160016a3 100644 --- a/package.xml +++ b/package.xml @@ -1653,6 +1653,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php b/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php index 2685854769..08aaae29a6 100644 --- a/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php +++ b/src/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php @@ -95,6 +95,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, T_FUNCTION, T_CLOSURE, T_PUBLIC, diff --git a/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.9.inc b/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.9.inc new file mode 100644 index 0000000000..f6c9d99682 --- /dev/null +++ b/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.9.inc @@ -0,0 +1,12 @@ + + * @copyright 2010-2014 Squiz Pty Ltd (ABN 77 084 670 600) + */ + +enum Foo { +} diff --git a/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php b/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php index 080df3aafc..ee81369ab7 100644 --- a/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php +++ b/src/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php @@ -45,6 +45,7 @@ public function getErrorList($testFile='FileCommentUnitTest.inc') case 'FileCommentUnitTest.4.inc': case 'FileCommentUnitTest.6.inc': case 'FileCommentUnitTest.7.inc': + case 'FileCommentUnitTest.9.inc': return [1 => 1]; case 'FileCommentUnitTest.5.inc': From 4010b603681295f7676d2d9052c74c34d109e086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:24:10 +0100 Subject: [PATCH 30/46] PHP 8.1: Squiz/InlineComment - Enums should be ignored --- .../Squiz/Sniffs/Commenting/InlineCommentSniff.php | 1 + .../Squiz/Tests/Commenting/InlineCommentUnitTest.inc | 8 ++++++++ .../Tests/Commenting/InlineCommentUnitTest.inc.fixed | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php b/src/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php index 7d7ee40e96..8ce950414a 100644 --- a/src/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php +++ b/src/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php @@ -74,6 +74,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS, T_INTERFACE, T_TRAIT, + T_ENUM, T_FUNCTION, T_CLOSURE, T_PUBLIC, diff --git a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc index 1b97af0b92..081bd7fa8f 100644 --- a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc +++ b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc @@ -173,3 +173,11 @@ final class MyClass */ // For this test line having an empty line below it, is fine. + +/** + * Comment should be ignored. + * + */ +enum MyEnum { + +} diff --git a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed index 6b66624176..07e6bf6240 100644 --- a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed @@ -166,3 +166,11 @@ final class MyClass */ // For this test line having an empty line below it, is fine. + +/** + * Comment should be ignored. + * + */ +enum MyEnum { + +} From a34b5000759b341c1d47a99e4299caa7c10a33ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:26:20 +0100 Subject: [PATCH 31/46] PHP 8.1: Squiz/FileExtension - Added support for enums --- package.xml | 1 + src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php | 2 +- src/Standards/Squiz/Tests/Files/FileExtensionUnitTest.5.inc | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/Standards/Squiz/Tests/Files/FileExtensionUnitTest.5.inc diff --git a/package.xml b/package.xml index 38160016a3..3bc6e28610 100644 --- a/package.xml +++ b/package.xml @@ -1771,6 +1771,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php b/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php index bae882146d..6277b809e6 100644 --- a/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php +++ b/src/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php @@ -42,7 +42,7 @@ public function process(File $phpcsFile, $stackPtr) $tokens = $phpcsFile->getTokens(); $fileName = $phpcsFile->getFilename(); $extension = substr($fileName, strrpos($fileName, '.')); - $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT], $stackPtr); + $nextClass = $phpcsFile->findNext([T_CLASS, T_INTERFACE, T_TRAIT, T_ENUM], $stackPtr); if ($nextClass !== false) { $phpcsFile->recordMetric($stackPtr, 'File extension for class files', $extension); diff --git a/src/Standards/Squiz/Tests/Files/FileExtensionUnitTest.5.inc b/src/Standards/Squiz/Tests/Files/FileExtensionUnitTest.5.inc new file mode 100644 index 0000000000..d777aff6b1 --- /dev/null +++ b/src/Standards/Squiz/Tests/Files/FileExtensionUnitTest.5.inc @@ -0,0 +1,3 @@ + From 718f390b7466e0d11b18f0513e176882a5892b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:27:58 +0100 Subject: [PATCH 32/46] PHP 8.1: Squiz/ControlStructureSpacing - Enums should be ignored --- .../Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php | 1 + .../Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc | 4 ++++ .../WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/src/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php b/src/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php index f38fd0e89b..808888f404 100644 --- a/src/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php +++ b/src/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php @@ -145,6 +145,7 @@ public function process(File $phpcsFile, $stackPtr) T_CLASS => true, T_INTERFACE => true, T_TRAIT => true, + T_ENUM => true, T_DOC_COMMENT_OPEN_TAG => true, ]; diff --git a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc index 0371ce49b4..dbab24be1d 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc +++ b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc @@ -261,3 +261,7 @@ $expr = match( $foo ){ }; echo $expr; + +enum SomeEnum +{ +} diff --git a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed index ad4505c3e1..4a655dc916 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed @@ -253,3 +253,7 @@ $expr = match($foo){ }; echo $expr; + +enum SomeEnum +{ +} From b520d4b6a432e63dcf07b08f982e5a2e0d4536b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hansl=C3=ADk?= Date: Sat, 20 Nov 2021 19:31:38 +0100 Subject: [PATCH 33/46] PHP 8.1: Squiz/StaticThisUsage - Added support for enums --- .../Sniffs/Scope/StaticThisUsageSniff.php | 2 +- .../Tests/Scope/StaticThisUsageUnitTest.inc | 6 +++++ .../Tests/Scope/StaticThisUsageUnitTest.php | 25 ++++++++++--------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php b/src/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php index 0bafbf4db4..79cb9f3f48 100644 --- a/src/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php +++ b/src/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php @@ -22,7 +22,7 @@ class StaticThisUsageSniff extends AbstractScopeSniff */ public function __construct() { - parent::__construct([T_CLASS, T_TRAIT, T_ANON_CLASS], [T_FUNCTION]); + parent::__construct([T_CLASS, T_TRAIT, T_ENUM, T_ANON_CLASS], [T_FUNCTION]); }//end __construct() diff --git a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc index 38b443f2fd..13bb44f1fe 100644 --- a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc +++ b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc @@ -115,3 +115,9 @@ $b = new class() return $This; } } + +enum MyEnum { + public static function myFunc() { + $this->doSomething(); + } +} diff --git a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php index 2935241b44..36d833903a 100644 --- a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php +++ b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php @@ -26,18 +26,19 @@ class StaticThisUsageUnitTest extends AbstractSniffUnitTest public function getErrorList() { return [ - 7 => 1, - 8 => 1, - 9 => 1, - 14 => 1, - 20 => 1, - 41 => 1, - 61 => 1, - 69 => 1, - 76 => 1, - 80 => 1, - 84 => 1, - 99 => 1, + 7 => 1, + 8 => 1, + 9 => 1, + 14 => 1, + 20 => 1, + 41 => 1, + 61 => 1, + 69 => 1, + 76 => 1, + 80 => 1, + 84 => 1, + 99 => 1, + 121 => 1, ]; }//end getErrorList() From fc2c525e676e1aaf692106815bf1c24ccd893a89 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 22:52:47 +0100 Subject: [PATCH 34/46] File::getDeclarationName(): tweak method description --- src/Files/File.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Files/File.php b/src/Files/File.php index e00ba7117b..5c86faa918 100644 --- a/src/Files/File.php +++ b/src/Files/File.php @@ -1223,7 +1223,7 @@ public function getFilename() /** - * Returns the declaration names for classes, interfaces, traits, and functions. + * Returns the declaration name for classes, interfaces, traits, enums, and functions. * * @param int $stackPtr The position of the declaration token which * declared the class, interface, trait, or function. From 024c47da6a0b0dbad62490c743f421d040d5ec8e Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 14:09:25 +0100 Subject: [PATCH 35/46] Generic/DuplicateClassName: improve enum tests * Test case file 1 should contain both a duplicate and a non-duplicate enum. * Test case file 2 should contain an enum which was already declared in file 1 to verify cross-file detection. --- .../Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc | 3 ++- .../Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc | 1 + .../Generic/Tests/Classes/DuplicateClassNameUnitTest.php | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc index 38ddef181e..91ab9d3975 100644 --- a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc +++ b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc @@ -4,8 +4,9 @@ class YourClass {} interface MyInterface {} interface YourInterface {} trait MyTrait {} -enum MyEnum {} trait YourTrait {} +enum MyEnum {} +enum YourEnum {} class MyClass {} interface MyInterface {} trait MyTrait {} diff --git a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc index e6f92eb130..6829748a5f 100644 --- a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc +++ b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc @@ -2,4 +2,5 @@ class MyClass {} interface MyInterface {} trait MyTrait {} +enum MyEnum {} ?> \ No newline at end of file diff --git a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php index 6caaf873c3..68982f8686 100644 --- a/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php +++ b/src/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php @@ -45,10 +45,10 @@ public function getWarningList($testFile='') switch ($testFile) { case 'DuplicateClassNameUnitTest.1.inc': return [ - 9 => 1, 10 => 1, 11 => 1, 12 => 1, + 13 => 1, ]; break; case 'DuplicateClassNameUnitTest.2.inc': @@ -56,6 +56,7 @@ public function getWarningList($testFile='') 2 => 1, 3 => 1, 4 => 1, + 5 => 1, ]; break; case 'DuplicateClassNameUnitTest.5.inc': From 16d8ee62c34b2dd1983a3deeb51754403158dbcb Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 16:31:44 +0100 Subject: [PATCH 36/46] Generic/CamelCapsFunctionName: improve enum tests Ensure that all aspects of the sniff are tested for enums. While these tests pass, if you look at the actual error message output, you will see some weirdness (declaration name for the `enum` set as `string`). This should be fixed once PR 3534 has been merged. --- .../CamelCapsFunctionNameUnitTest.inc | 19 ++++++++++++++++--- .../CamelCapsFunctionNameUnitTest.php | 6 ++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc index f9a9885b3a..8441060d27 100644 --- a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc +++ b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc @@ -166,7 +166,20 @@ abstract class My_Class { public function _MY_CLASS() {} } -enum My_Enum { - public function my_class() {} - public function _MY_CLASS() {} +enum Suit: string implements Colorful, CardGame { + // Magic methods. + function __call($name, $args) {} + static function __callStatic($name, $args) {} + function __invoke() {} + + // Valid Method Name. + public function getSomeValue() {} + + // Double underscore non-magic methods not allowed. + function __myFunction() {} + function __my_function() {} + + // Non-camelcase. + public function parseMyDSN() {} + public function get_some_value() {} } diff --git a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php index 839c30243e..3d0320c3ae 100644 --- a/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php +++ b/src/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php @@ -63,8 +63,10 @@ public function getErrorList() 147 => 2, 158 => 1, 159 => 1, - 170 => 1, - 171 => 1, + 179 => 1, + 180 => 2, + 183 => 1, + 184 => 1, ]; return $errors; From d2c86abdd92796a19ee026e85e732dc96bf5eff6 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 21:55:06 +0100 Subject: [PATCH 37/46] Generic/ValidFunctionName: improve enum tests Ensure that all aspects of the sniff are tested for enums. While these tests pass, if you look at the actual error message output, you will see some weirdness (declaration name for the `enum` set as `string`). This should be fixed once PR 3534 has been merged. --- .../ValidFunctionNameUnitTest.inc | 22 ++++++++++++++++--- .../ValidFunctionNameUnitTest.php | 6 +++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc index e89aea6078..18b1a48176 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc @@ -221,7 +221,23 @@ abstract class My_Class { public function _MY_CLASS() {} } -enum My_Enum { - public function my_class() {} - public function _MY_CLASS() {} +enum Suit: string implements Colorful, CardGame { + // Magic methods. + function __call($name, $args) {} + static function __callStatic($name, $args) {} + function __invoke() {} + + // Valid Method Name. + public function parseMyDSN() {} + private function _getAnotherValue() {} + + // Double underscore non-magic methods not allowed. + function __myFunction() {} + function __my_function() {} + + // Non-camelcase. + public function get_some_value() {} + + // Private without underscore prefix. + private function getMe() {} } diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php index 26f9775bcb..4639a1e2ab 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php @@ -122,8 +122,10 @@ public function getErrorList() 212 => 1, 213 => 1, 214 => 1, - 225 => 1, - 226 => 2, + 235 => 1, + 236 => 2, + 239 => 1, + 242 => 1, ]; }//end getErrorList() From 2632099909fd2803740f15926c087ca828d8382d Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 22:16:24 +0100 Subject: [PATCH 38/46] PEAR/ValidClassName: improve enum tests Ensure that backed enum signatures are included in the tests. Note: the adjusted tests _without a space between the enum name and the colon_ will fail until PR 3534 has been merged. --- .../Tests/NamingConventions/ValidClassNameUnitTest.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc index bc0e92a1d5..053a4fee2f 100644 --- a/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc +++ b/src/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc @@ -67,19 +67,19 @@ trait ___ {} trait Invalid__Name {} -enum Valid_Name {} +enum Valid_Name: string {} -enum invalid_Name {} +enum invalid_Name : String {} enum invalid_name {} -enum Invalid_name {} +enum Invalid_name: Int {} enum VALID_Name {} enum VALID_NAME {} -enum VALID_Name {} +enum VALID_Name : int {} enum ValidName {} From 37bc4e098f64a1317d66f3167513b0d4a3b51303 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 23:19:08 +0100 Subject: [PATCH 39/46] PSR12/UseDeclaration: improve enum tests Test more aspects of the sniff are applied correctly to enums. --- src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc | 3 ++- src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc index c3cc6348a1..c8ad746a73 100644 --- a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc +++ b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.inc @@ -215,6 +215,7 @@ enum SomeEnum1 enum SomeEnum2 { - use FirstTrait; + + use FirstTrait; } diff --git a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php index 196fbc49c7..797a2912e7 100644 --- a/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php +++ b/src/Standards/PSR12/Tests/Traits/UseDeclarationUnitTest.php @@ -47,7 +47,7 @@ public function getErrorList() 165 => 1, 170 => 1, 208 => 1, - 218 => 1, + 219 => 3, ]; }//end getErrorList() From 19b57751201dc6408f92557996ef6c2e7fdc0079 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 17:39:56 +0100 Subject: [PATCH 40/46] Squiz/InlineComment: fix enum test The enum test was placed _below_ a test which was marked as testing a specific situation at the end of a file, which invalidated the "end of file" test. Fixed by moving the new test up. --- .../Tests/Commenting/InlineCommentUnitTest.inc | 16 ++++++++-------- .../Commenting/InlineCommentUnitTest.inc.fixed | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc index 081bd7fa8f..10a0b4b4c6 100644 --- a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc +++ b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc @@ -165,6 +165,14 @@ final class MyClass final public function test() {} } +/** + * Comment should be ignored. + * + */ +enum MyEnum { + +} + /* * N.B.: The below test line must be the last test in the file. * Testing that a new line after an inline comment when it's the last non-whitespace @@ -173,11 +181,3 @@ final class MyClass */ // For this test line having an empty line below it, is fine. - -/** - * Comment should be ignored. - * - */ -enum MyEnum { - -} diff --git a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed index 07e6bf6240..97ae01490d 100644 --- a/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc.fixed @@ -158,6 +158,14 @@ final class MyClass final public function test() {} } +/** + * Comment should be ignored. + * + */ +enum MyEnum { + +} + /* * N.B.: The below test line must be the last test in the file. * Testing that a new line after an inline comment when it's the last non-whitespace @@ -166,11 +174,3 @@ final class MyClass */ // For this test line having an empty line below it, is fine. - -/** - * Comment should be ignored. - * - */ -enum MyEnum { - -} From b1ae480c25114f7f1755335736ef2682abe5cda5 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 22:51:15 +0100 Subject: [PATCH 41/46] Squiz/ClassFileName: improve enum tests Add a _valid_ test case for a backed enum. Note: this new test will fail until PR 3534 has been merged. --- src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc index 204374f396..8b5a5aa708 100644 --- a/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc @@ -6,7 +6,7 @@ class ClassFileNameUnitTest {} interface ClassFileNameUnitTest {} trait ClassFileNameUnitTest {} enum ClassFileNameUnitTest {} - +enum ClassFileNameUnitTest: int {} // Invalid filename matching class name (case sensitive). class classFileNameUnitTest {} From 7494c3d693df0fa4be70aa9bfb12ceead15b7dcf Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 23:06:06 +0100 Subject: [PATCH 42/46] Squiz/LowercaseClassKeywords: improve enum tests Let's also test the implements keyword when used with an enum. --- .../Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc | 2 +- .../Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed | 2 +- .../Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc index 758fcaf2a8..ea8cd89ec5 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc @@ -3,7 +3,7 @@ Abstract Class MyClass Extends MyClass {} Final Class MyClass Implements MyInterface {} Interface MyInterface {} Trait MyTrait {} -Enum MyEnum {} +Enum MyEnum IMPLEMENTS Colorful {} class MyClass { diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed index fad6c7c5a2..f573905217 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc.fixed @@ -3,7 +3,7 @@ abstract class MyClass extends MyClass {} final class MyClass implements MyInterface {} interface MyInterface {} trait MyTrait {} -enum MyEnum {} +enum MyEnum implements Colorful {} class MyClass { diff --git a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php index 47e4b3da4f..8c4d10c79a 100644 --- a/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php +++ b/src/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php @@ -30,7 +30,7 @@ public function getErrorList() 3 => 3, 4 => 1, 5 => 1, - 6 => 1, + 6 => 2, 10 => 1, 11 => 1, 14 => 1, From 32f38328b0c10446b8fb2964e79a23bfde5a0dff Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 22:29:54 +0100 Subject: [PATCH 43/46] Squiz/ValidClassName: improve enum tests + bugfix Ensure that backed enum signatures are included in the tests. As this sniff retrieves the class name itself instead of using the `File::getDeclarationName()` method, these tests _will_ find the name correctly (not mistake the type for the name), but _may_ include the colon in the name as the "name end" determination checks on scope opener and whitespace and doesn't take the colon for the type declaration into account. --- .../Squiz/Sniffs/Classes/ValidClassNameSniff.php | 2 +- .../Squiz/Tests/Classes/ValidClassNameUnitTest.inc | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php b/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php index 8d45c86e0c..ffddd2cde7 100644 --- a/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php +++ b/src/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php @@ -59,7 +59,7 @@ public function process(File $phpcsFile, $stackPtr) // starting with the number will be multiple tokens. $opener = $tokens[$stackPtr]['scope_opener']; $nameStart = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), $opener, true); - $nameEnd = $phpcsFile->findNext(T_WHITESPACE, $nameStart, $opener); + $nameEnd = $phpcsFile->findNext([T_WHITESPACE, T_COLON], $nameStart, $opener); if ($nameEnd === false) { $name = $tokens[$nameStart]['content']; } else { diff --git a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc index 62a769a034..3fe39435b4 100644 --- a/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc +++ b/src/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc @@ -138,7 +138,7 @@ trait Base } // Valid enum name. -enum ValidCamelCaseClass {} +enum ValidCamelCaseClass: string {} // Incorrect usage of camel case. @@ -147,22 +147,22 @@ enum Invalid_Camel_Case_Class_With_Underscores {} // All lowercase. -enum invalidlowercaseclass {} +enum invalidlowercaseclass: INT {} enum invalid_lowercase_class_with_underscores {} // All uppercase. -enum VALIDUPPERCASECLASS {} +enum VALIDUPPERCASECLASS: int {} enum INVALID_UPPERCASE_CLASS_WITH_UNDERSCORES {} // Mix camel case with uppercase. -enum ValidCamelCaseClassWithUPPERCASE {} +enum ValidCamelCaseClassWithUPPERCASE : string {} // Usage of numeric characters. enum ValidCamelCaseClassWith1Number {} -enum ValidCamelCaseClassWith12345Numbers {} +enum ValidCamelCaseClassWith12345Numbers : string {} enum ValidCamelCaseClassEndingWithNumber5 {} enum Testing{} From b0b4addfd10c0694e49e33ac5aaff29928214715 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 23:26:31 +0100 Subject: [PATCH 44/46] Squiz/NonExecutableCode: minor test tweak Only use tabs when in the test cases when they serve a specific purpose. --- .../Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc index 6435bd0663..c9bf052f34 100644 --- a/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc +++ b/src/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.2.inc @@ -46,9 +46,9 @@ trait Something { } enum Something { - function getReturnType() { - echo 'no error'; - } + function getReturnType() { + echo 'no error'; + } } $a = new class { From 5629985d0fbe21b44b0e1c01f4cee31096038959 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 23:09:55 +0100 Subject: [PATCH 45/46] Squiz/StaticThisUsage: improve enum tests Let's also test that `$this` in a non-static enum method doesn't get flagged. --- src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc | 4 ++++ src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc index 13bb44f1fe..dd6530e802 100644 --- a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc +++ b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc @@ -117,6 +117,10 @@ $b = new class() } enum MyEnum { + private function notStatic () { + $this->doSomething(); + } + public static function myFunc() { $this->doSomething(); } diff --git a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php index 36d833903a..b1a5dd6afd 100644 --- a/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php +++ b/src/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php @@ -38,7 +38,7 @@ public function getErrorList() 80 => 1, 84 => 1, 99 => 1, - 121 => 1, + 125 => 1, ]; }//end getErrorList() From 15a0b4ebfb942474322647dda062301f39ed029b Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 18 Jan 2022 23:33:35 +0100 Subject: [PATCH 46/46] Squiz/ControlStructureSpacing: fix the enum test The test as-it-was, wasn't actually testing anything. As the sniff is about control structures, the `enum` needs to be nested in one before the test would fail without the fix, --- .../Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc | 6 ++++-- .../WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc index dbab24be1d..70abae434d 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc +++ b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc @@ -262,6 +262,8 @@ $expr = match( $foo ){ }; echo $expr; -enum SomeEnum -{ +if($true) { + + enum SomeEnum {} + } diff --git a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed index 4a655dc916..c64de25e16 100644 --- a/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed +++ b/src/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc.fixed @@ -254,6 +254,8 @@ $expr = match($foo){ echo $expr; -enum SomeEnum -{ +if($true) { + + enum SomeEnum {} + }