Browse Source

minor #5978 PHP8.1 - Enum (start) (SpacePossum)

This PR was merged into the master branch.

Discussion
----------

PHP8.1 - Enum (start)

Commits
-------

635ef96c6 PHP8.1 - Enum (start)
SpacePossum 3 years ago
parent
commit
51dd236e79

+ 2 - 1
.composer-require-checker.json

@@ -15,7 +15,8 @@
         "T_NAME_QUALIFIED",
         "T_NAME_RELATIVE",
         "T_NULLSAFE_OBJECT_OPERATOR",
-        "T_READONLY"
+        "T_READONLY",
+        "T_ENUM"
     ],
     "php-core-extensions" : [
         "dom", "mbstring", "Phar",

+ 4 - 0
src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php

@@ -117,6 +117,10 @@ final class SingleSpaceAfterConstructFixer extends AbstractFixer implements Conf
             self::$tokenMap['readonly'] = T_READONLY;
         }
 
+        if (\defined('T_ENUM')) { // @TODO: drop condition when PHP 8.1+ is required
+            self::$tokenMap['enum'] = T_ENUM;
+        }
+
         $this->fixTokenMap = [];
 
         foreach ($this->configuration['constructs'] as $key) {

+ 1 - 1
src/Tokenizer/Token.php

@@ -306,7 +306,7 @@ final class Token
                 'T_INTERFACE', 'T_ISSET', 'T_LIST', 'T_LOGICAL_AND', 'T_LOGICAL_OR', 'T_LOGICAL_XOR',
                 'T_NAMESPACE', 'T_MATCH', 'T_NEW', 'T_PRINT', 'T_PRIVATE', 'T_PROTECTED', 'T_PUBLIC', 'T_REQUIRE',
                 'T_REQUIRE_ONCE', 'T_RETURN', 'T_STATIC', 'T_SWITCH', 'T_THROW', 'T_TRAIT', 'T_TRY',
-                'T_UNSET', 'T_USE', 'T_VAR', 'T_WHILE', 'T_YIELD', 'T_YIELD_FROM', 'T_READONLY',
+                'T_UNSET', 'T_USE', 'T_VAR', 'T_WHILE', 'T_YIELD', 'T_YIELD_FROM', 'T_READONLY', 'T_ENUM',
             ]) + [
                 CT::T_ARRAY_TYPEHINT => CT::T_ARRAY_TYPEHINT,
                 CT::T_CLASS_CONSTANT => CT::T_CLASS_CONSTANT,

+ 13 - 0
tests/Fixer/Casing/LowercaseKeywordsFixerTest.php

@@ -157,6 +157,19 @@ class Point {
         privatE READONLY float $z = 0.0,
     ) {}
 }
+',
+        ];
+
+        yield 'enum full caps' => [
+            '<?php
+enum Suit {
+    case Hearts;
+}
+',
+            '<?php
+ENUM Suit {
+    case Hearts;
+}
 ',
         ];
     }

+ 35 - 5
tests/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixerTest.php

@@ -683,6 +683,10 @@ $foo;',
                 '<?php do {} while (true);',
                 '<?php do{} while (true);',
             ],
+            [
+                '<?php DO {} while (true);',
+                '<?php DO{} while (true);',
+            ],
             [
                 '<?php do {} while (true);',
                 '<?php do  {} while (true);',
@@ -736,8 +740,8 @@ $foo;',
 9000;',
             ],
             [
-                '<?php echo /* foo */9000;',
-                '<?php echo/* foo */9000;',
+                '<?php ECHO /* foo */9000;',
+                '<?php ECHO/* foo */9000;',
             ],
         ];
     }
@@ -2040,8 +2044,8 @@ CONST BAR = 9000; }',
                 '<?php class Foo { public$bar; }',
             ],
             [
-                '<?php class Foo { public $bar; }',
-                '<?php class Foo { public  $bar; }',
+                '<?php class Foo { Public $bar; }',
+                '<?php class Foo { Public  $bar; }',
             ],
             [
                 '<?php class Foo { public $bar; }',
@@ -3099,7 +3103,7 @@ class Point {
 
     public function provideFix81Cases(): \Generator
     {
-        yield [
+        yield 'readonly' => [
             '<?php
 final class Foo
 {
@@ -3121,5 +3125,31 @@ final class Foo
 }
             ',
         ];
+
+        yield 'enum' => [
+            '<?php
+enum Suit {
+    case Hearts;
+}
+',
+            '<?php
+enum     Suit {
+    case Hearts;
+}
+',
+        ];
+
+        yield 'enum full caps' => [
+            '<?php
+ENUM Suit {
+    case Hearts;
+}
+',
+            '<?php
+ENUM     Suit {
+    case Hearts;
+}
+',
+        ];
     }
 }

+ 12 - 2
tests/Fixtures/Integration/misc/PHP8_1.test

@@ -2,7 +2,8 @@
 PHP 8.1 test.
 --RULESET--
 {
-    "@PhpCsFixer": true
+    "@PhpCsFixer": true,
+    "@PHP81Migration": true
 }
 --REQUIREMENTS--
 {"php": 80100}
@@ -13,7 +14,8 @@ PHP 8.1 test.
 final class Foo
 {
     public readonly string $c;
-    readonly string $prop, $b;
+    public readonly string $prop;
+    public readonly string $b;
 }
 
 // https://wiki.php.net/rfc/noreturn_type
@@ -24,11 +26,15 @@ function endProgram(): never
 
 // https://wiki.php.net/rfc/fsync_function
 fsync($fp);
+$a = fdatasync($fp);
 
 // https://wiki.php.net/rfc/explicit_octal_notation
 $a = 0o16 === 14;
 $b = 0o744;
 
+// https://wiki.php.net/rfc/is_list
+$a = array_is_list($z);
+
 --INPUT--
 <?php
 
@@ -47,7 +53,11 @@ function endProgram(): NEVER
 
 // https://wiki.php.net/rfc/fsync_function
 FSYNC($fp);
+$a = Fdatasync($fp);
 
 // https://wiki.php.net/rfc/explicit_octal_notation
 $a = 0O16 === 14;
 $b = 0744;
+
+// https://wiki.php.net/rfc/is_list
+$a = Array_Is_List($z);