6
6
use PhpCsFixer \FixerDefinition \CodeSample ;
7
7
use PhpCsFixer \FixerDefinition \FixerDefinition ;
8
8
use PhpCsFixer \FixerDefinition \FixerDefinitionInterface ;
9
- use PhpCsFixer \Tokenizer \Analyzer \Analysis \TypeAnalysis ;
10
9
use PhpCsFixer \Tokenizer \Analyzer \ArgumentsAnalyzer ;
11
10
use PhpCsFixer \Tokenizer \CT ;
12
11
use PhpCsFixer \Tokenizer \Token ;
@@ -91,13 +90,14 @@ private function fixFunction(Tokens $tokens, int $functionIndex): void
91
90
92
91
// When third argument is already present and it is null, override its value.
93
92
if ($ argumentCount >= 3 ) {
94
- $ thirdArgumentType = $ this ->getThirdArgumentInfo ($ tokens , $ openParenthesisIndex , $ closeParenthesisIndex );
95
- if ($ thirdArgumentType === null ) {
93
+ $ thirdArgumentTuple = $ this ->getThirdArgumentTokenTuple ($ tokens , $ openParenthesisIndex , $ closeParenthesisIndex );
94
+ if ($ thirdArgumentTuple === [] ) {
96
95
return ;
97
96
}
98
97
99
- if ($ thirdArgumentType ->getName () === 'null ' ) {
100
- $ this ->setArgumentValueToAmp ($ tokens , $ thirdArgumentType ->getStartIndex ());
98
+ $ thirdArgumentToken = reset ($ thirdArgumentTuple );
99
+ if ($ thirdArgumentToken ->getContent () === 'null ' ) {
100
+ $ this ->setArgumentValueToAmp ($ tokens , key ($ thirdArgumentTuple ));
101
101
}
102
102
103
103
return ;
@@ -112,7 +112,7 @@ private function fixFunction(Tokens $tokens, int $functionIndex): void
112
112
$ tokensToInsert [] = new Token ([T_STRING , 'null ' ]);
113
113
}
114
114
115
- // Add third argument (arg separator): ", & "
115
+ // Add third argument (arg separator): ", '&' "
116
116
$ tokensToInsert [] = new Token (', ' );
117
117
$ tokensToInsert [] = new Token ([T_WHITESPACE , ' ' ]);
118
118
$ tokensToInsert [] = new Token ([T_STRING , "'&' " ]);
@@ -139,19 +139,28 @@ private function isFunctionCall(Tokens $tokens, int $index): bool
139
139
140
140
/**
141
141
* @param Tokens<Token> $tokens
142
+ * @return array<int, Token>
142
143
*/
143
- private function getThirdArgumentInfo (
144
+ private function getThirdArgumentTokenTuple (
144
145
Tokens $ tokens ,
145
146
int $ openParenthesisIndex ,
146
147
int $ closeParenthesisIndex
147
- ): ? TypeAnalysis {
148
+ ): array {
148
149
$ argumentsAnalyzer = new ArgumentsAnalyzer ();
150
+ $ allArguments = $ argumentsAnalyzer ->getArguments ($ tokens , $ openParenthesisIndex , $ closeParenthesisIndex );
151
+ $ thirdArgumentIndex = array_slice ($ allArguments , 2 , 1 , true );
149
152
150
- $ arguments = $ argumentsAnalyzer ->getArguments ($ tokens , $ openParenthesisIndex , $ closeParenthesisIndex );
151
- $ argumentIndex = array_slice ($ arguments , 2 , 1 , true );
152
- $ argumentInfo = $ argumentsAnalyzer ->getArgumentInfo ($ tokens , key ($ argumentIndex ), reset ($ argumentIndex ));
153
+ for ($ index = key ($ thirdArgumentIndex ); $ index <= reset ($ thirdArgumentIndex ); $ index ++) {
154
+ /** @var int $index */
155
+ /** @var Token $token */
156
+ $ token = $ tokens [$ index ];
153
157
154
- return $ argumentInfo ->getTypeAnalysis ();
158
+ if (!$ token ->isWhitespace () && !$ token ->isComment ()) {
159
+ return [$ index => $ token ];
160
+ }
161
+ }
162
+
163
+ return [];
155
164
}
156
165
157
166
/**
0 commit comments