@@ -85,6 +85,30 @@ public function process(File $phpcsFile, $stackPtr)
8585
8686 $ tokens = $ phpcsFile ->getTokens ();
8787
88+ // First make sure all arrays use short array syntax, this makes fixing much easier.
89+ if ($ tokens [$ stackPtr ]['code ' ] === T_ARRAY ) {
90+ $ error = 'Short array syntax must be used to define arrays ' ;
91+ $ fix = $ phpcsFile ->addFixableError ($ error , $ stackPtr , 'FoundLongArray ' );
92+
93+ if ($ fix === true ) {
94+ $ tokens = $ phpcsFile ->getTokens ();
95+ $ opener = $ tokens [$ stackPtr ]['parenthesis_opener ' ];
96+ $ closer = $ tokens [$ stackPtr ]['parenthesis_closer ' ];
97+
98+ $ phpcsFile ->fixer ->beginChangeset ();
99+
100+ if ($ opener === null ) {
101+ $ phpcsFile ->fixer ->replaceToken ($ stackPtr , '[] ' );
102+ } else {
103+ $ phpcsFile ->fixer ->replaceToken ($ stackPtr , '' );
104+ $ phpcsFile ->fixer ->replaceToken ($ opener , '[ ' );
105+ $ phpcsFile ->fixer ->replaceToken ($ closer , '] ' );
106+ }
107+
108+ $ phpcsFile ->fixer ->endChangeset ();
109+ }
110+ }//end if
111+
88112 if ($ tokens [$ stackPtr ]['code ' ] === T_ARRAY ) {
89113 $ arrayStart = $ tokens [$ stackPtr ]['parenthesis_opener ' ];
90114 if (isset ($ tokens [$ arrayStart ]['parenthesis_closer ' ]) === false ) {
@@ -328,6 +352,8 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array
328352 T_OBJECT_CAST ,
329353 T_STATIC ,
330354 T_CONST ,
355+ T_RETURN ,
356+ T_OBJECT_OPERATOR ,
331357 );
332358
333359 $ firstOnLine = $ phpcsFile ->findFirstOnLine ($ starts , $ prevNonWhitespaceToken );
@@ -357,6 +383,23 @@ public function processMultiLineArray($phpcsFile, $stackPtr, $arrayStart, $array
357383 $ indentStart = $ stackPtr ;
358384 }//end switch
359385
386+ // If this is the first argument in a function ensure the bracket to be right after the parenthesis. eg "array_combine([".
387+ if ($ tokens [$ prevNonWhitespaceToken ]['code ' ] === T_OPEN_PARENTHESIS && $ tokens [$ stackPtr ]['code ' ] === T_OPEN_SHORT_ARRAY ) {
388+ if ($ tokens [$ stackPtr ]['line ' ] > $ tokens [$ prevNonWhitespaceToken ]['line ' ]) {
389+ $ error = 'Array open bracket should be after function open parenthesis "([" ' ;
390+ $ data = array ();
391+ $ fix = $ phpcsFile ->addFixableError ($ error , $ stackPtr , 'ShortArrayOpenWrongLine ' , $ data );
392+ if ($ fix === true ) {
393+ $ phpcsFile ->fixer ->beginChangeset ();
394+ for ($ i = ($ prevNonWhitespaceToken + 1 ); $ i < $ stackPtr ; $ i ++) {
395+ $ phpcsFile ->fixer ->replaceToken ($ i , '' );
396+ }
397+
398+ $ phpcsFile ->fixer ->endChangeset ();
399+ }
400+ }
401+ }
402+
360403 // Check the closing bracket is on a new line.
361404 $ lastContent = $ phpcsFile ->findPrevious (T_WHITESPACE , ($ arrayEnd - 1 ), $ arrayStart , true );
362405 if ($ tokens [$ lastContent ]['line ' ] === $ tokens [$ arrayEnd ]['line ' ]) {
0 commit comments