@@ -308,7 +308,9 @@ public function processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens)
308
308
return ;
309
309
}
310
310
311
- // The opening brace needs to be one space away from the closing parenthesis.
311
+ // The opening brace needs to be on the same line as the closing parenthesis.
312
+ // There should only be one space between the closing parenthesis - or the end of the
313
+ // return type - and the opening brace.
312
314
$ opener = $ tokens [$ stackPtr ]['scope_opener ' ];
313
315
if ($ tokens [$ opener ]['line ' ] !== $ tokens [$ closeBracket ]['line ' ]) {
314
316
$ error = 'The closing parenthesis and the %s of a multi-line function declaration must be on the same line ' ;
@@ -320,67 +322,70 @@ public function processMultiLineDeclaration($phpcsFile, $stackPtr, $tokens)
320
322
$ data = ['arrow ' ];
321
323
}
322
324
323
- $ fix = $ phpcsFile ->addFixableError ($ error , $ opener , $ code , $ data );
324
- if ($ fix === true ) {
325
- $ prev = $ phpcsFile ->findPrevious (Tokens::$ emptyTokens , ($ opener - 1 ), $ closeBracket , true );
326
- $ phpcsFile ->fixer ->beginChangeset ();
327
- $ phpcsFile ->fixer ->addContent ($ prev , ' ' .$ tokens [$ opener ]['content ' ]);
328
-
329
- // If the opener is on a line by itself, removing it will create
330
- // an empty line, so just remove the entire line instead.
331
- $ prev = $ phpcsFile ->findPrevious (T_WHITESPACE , ($ opener - 1 ), $ closeBracket , true );
332
- $ next = $ phpcsFile ->findNext (T_WHITESPACE , ($ opener + 1 ), null , true );
333
-
334
- if ($ tokens [$ prev ]['line ' ] < $ tokens [$ opener ]['line ' ]
335
- && $ tokens [$ next ]['line ' ] > $ tokens [$ opener ]['line ' ]
336
- ) {
337
- // Clear the whole line.
338
- for ($ i = ($ prev + 1 ); $ i < $ next ; $ i ++) {
339
- if ($ tokens [$ i ]['line ' ] === $ tokens [$ opener ]['line ' ]) {
340
- $ phpcsFile ->fixer ->replaceToken ($ i , '' );
325
+ $ prev = $ phpcsFile ->findPrevious (Tokens::$ emptyTokens , ($ opener - 1 ), $ closeBracket , true );
326
+ if ($ tokens [$ prev ]['line ' ] === $ tokens [$ opener ]['line ' ]) {
327
+ // End of the return type is not on the same line as the close parenthesis.
328
+ $ phpcsFile ->addError ($ error , $ opener , $ code , $ data );
329
+ } else {
330
+ $ fix = $ phpcsFile ->addFixableError ($ error , $ opener , $ code , $ data );
331
+ if ($ fix === true ) {
332
+ $ phpcsFile ->fixer ->beginChangeset ();
333
+ $ phpcsFile ->fixer ->addContent ($ prev , ' ' .$ tokens [$ opener ]['content ' ]);
334
+
335
+ // If the opener is on a line by itself, removing it will create
336
+ // an empty line, so just remove the entire line instead.
337
+ $ prev = $ phpcsFile ->findPrevious (T_WHITESPACE , ($ opener - 1 ), $ closeBracket , true );
338
+ $ next = $ phpcsFile ->findNext (T_WHITESPACE , ($ opener + 1 ), null , true );
339
+
340
+ if ($ tokens [$ prev ]['line ' ] < $ tokens [$ opener ]['line ' ]
341
+ && $ tokens [$ next ]['line ' ] > $ tokens [$ opener ]['line ' ]
342
+ ) {
343
+ // Clear the whole line.
344
+ for ($ i = ($ prev + 1 ); $ i < $ next ; $ i ++) {
345
+ if ($ tokens [$ i ]['line ' ] === $ tokens [$ opener ]['line ' ]) {
346
+ $ phpcsFile ->fixer ->replaceToken ($ i , '' );
347
+ }
348
+ }
349
+ } else {
350
+ // Just remove the opener.
351
+ $ phpcsFile ->fixer ->replaceToken ($ opener , '' );
352
+ if ($ tokens [$ next ]['line ' ] === $ tokens [$ opener ]['line ' ]) {
353
+ $ phpcsFile ->fixer ->replaceToken (($ opener + 1 ), '' );
341
354
}
342
355
}
343
- } else {
344
- // Just remove the opener.
345
- $ phpcsFile ->fixer ->replaceToken ($ opener , '' );
346
- if ($ tokens [$ next ]['line ' ] === $ tokens [$ opener ]['line ' ]) {
347
- $ phpcsFile ->fixer ->replaceToken (($ opener + 1 ), '' );
348
- }
349
- }
350
356
351
- $ phpcsFile ->fixer ->endChangeset ();
357
+ $ phpcsFile ->fixer ->endChangeset ();
358
+ }//end if
352
359
}//end if
360
+ }//end if
361
+
362
+ $ prev = $ tokens [($ opener - 1 )];
363
+ if ($ prev ['code ' ] !== T_WHITESPACE ) {
364
+ $ length = 0 ;
353
365
} else {
354
- $ prev = $ tokens [($ opener - 1 )];
355
- if ($ prev ['code ' ] !== T_WHITESPACE ) {
356
- $ length = 0 ;
357
- } else {
358
- $ length = strlen ($ prev ['content ' ]);
359
- }
366
+ $ length = strlen ($ prev ['content ' ]);
367
+ }
360
368
361
- if ($ length !== 1 ) {
362
- $ error = 'There must be a single space between the closing parenthesis and the %s of a multi-line function declaration; found %s spaces ' ;
363
- $ code = 'SpaceBeforeOpenBrace ' ;
364
- $ data = ['opening brace ' ];
369
+ if ($ length !== 1 ) {
370
+ $ error = 'There must be a single space before the %s of a multi-line function declaration; found %s spaces ' ;
371
+ $ code = 'SpaceBeforeOpenBrace ' ;
372
+ $ data = ['opening brace ' ];
365
373
366
- if ($ tokens [$ stackPtr ]['code ' ] === T_FN ) {
367
- $ code = 'SpaceBeforeArrow ' ;
368
- $ data = ['arrow ' ];
369
- }
374
+ if ($ tokens [$ stackPtr ]['code ' ] === T_FN ) {
375
+ $ code = 'SpaceBeforeArrow ' ;
376
+ $ data = ['arrow ' ];
377
+ }
370
378
371
- $ data [] = $ length ;
379
+ $ data [] = $ length ;
372
380
373
- $ fix = $ phpcsFile ->addFixableError ($ error , ($ opener - 1 ), $ code , $ data );
374
- if ($ fix === true ) {
375
- if ($ length === 0 ) {
376
- $ phpcsFile ->fixer ->addContentBefore ($ opener , ' ' );
377
- } else {
378
- $ phpcsFile ->fixer ->replaceToken (($ opener - 1 ), ' ' );
379
- }
381
+ $ fix = $ phpcsFile ->addFixableError ($ error , ($ opener - 1 ), $ code , $ data );
382
+ if ($ fix === true ) {
383
+ if ($ length === 0 ) {
384
+ $ phpcsFile ->fixer ->addContentBefore ($ opener , ' ' );
385
+ } else {
386
+ $ phpcsFile ->fixer ->replaceToken (($ opener - 1 ), ' ' );
380
387
}
381
-
382
- return ;
383
- }//end if
388
+ }
384
389
}//end if
385
390
386
391
}//end processMultiLineDeclaration()
0 commit comments