• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PHP-CS-Fixer / PHP-CS-Fixer / 3721300657

pending completion
3721300657

push

github

GitHub
minor: Follow PSR12 ordered imports in Symfony ruleset (#6712)

9 of 9 new or added lines in 2 files covered. (100.0%)

22674 of 24281 relevant lines covered (93.38%)

39.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

38.46
/src/Tokenizer/Transformer/NullableTypeTransformer.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of PHP CS Fixer.
7
 *
8
 * (c) Fabien Potencier <fabien@symfony.com>
9
 *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
10
 *
11
 * This source file is subject to the MIT license that is bundled
12
 * with this source code in the file LICENSE.
13
 */
14

15
namespace PhpCsFixer\Tokenizer\Transformer;
16

17
use PhpCsFixer\Tokenizer\AbstractTransformer;
18
use PhpCsFixer\Tokenizer\CT;
19
use PhpCsFixer\Tokenizer\Token;
20
use PhpCsFixer\Tokenizer\Tokens;
21

22
/**
23
 * Transform `?` operator into CT::T_NULLABLE_TYPE in `function foo(?Bar $b) {}`.
24
 *
25
 * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
26
 *
27
 * @internal
28
 */
29
final class NullableTypeTransformer extends AbstractTransformer
30
{
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function getPriority(): int
35
    {
36
        // needs to run after TypeColonTransformer
37
        return -20;
1✔
38
    }
39

40
    /**
41
     * {@inheritdoc}
42
     */
43
    public function getRequiredPhpVersionId(): int
44
    {
45
        return 70100;
2✔
46
    }
47

48
    /**
49
     * {@inheritdoc}
50
     */
51
    public function process(Tokens $tokens, Token $token, int $index): void
52
    {
53
        if (!$token->equals('?')) {
14✔
54
            return;
14✔
55
        }
56

57
        static $types;
13✔
58

59
        if (null === $types) {
13✔
60
            $types = [
×
61
                '(',
×
62
                ',',
×
63
                [CT::T_TYPE_COLON],
×
64
                [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PUBLIC],
×
65
                [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PROTECTED],
×
66
                [CT::T_CONSTRUCTOR_PROPERTY_PROMOTION_PRIVATE],
×
67
                [CT::T_ATTRIBUTE_CLOSE],
×
68
                [T_PRIVATE],
×
69
                [T_PROTECTED],
×
70
                [T_PUBLIC],
×
71
                [T_VAR],
×
72
                [T_STATIC],
×
73
            ];
×
74

75
            if (\defined('T_READONLY')) { // @TODO: drop condition when PHP 8.1+ is required
×
76
                $types[] = [T_READONLY];
×
77
            }
78
        }
79

80
        $prevIndex = $tokens->getPrevMeaningfulToken($index);
13✔
81

82
        if ($tokens[$prevIndex]->equalsAny($types)) {
13✔
83
            $tokens[$index] = new Token([CT::T_NULLABLE_TYPE, '?']);
12✔
84
        }
85
    }
86

87
    /**
88
     * {@inheritdoc}
89
     */
90
    public function getCustomTokens(): array
91
    {
92
        return [CT::T_NULLABLE_TYPE];
14✔
93
    }
94
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc