diff vendor/squizlabs/php_codesniffer/CodeSniffer/Tokenizers/PHP.php @ 12:7a779792577d

Update Drupal core to v8.4.5 (via Composer)
author Chris Cannam
date Fri, 23 Feb 2018 15:52:07 +0000
parents 4c8ae668cc8c
children
line wrap: on
line diff
--- a/vendor/squizlabs/php_codesniffer/CodeSniffer/Tokenizers/PHP.php	Fri Feb 23 15:51:18 2018 +0000
+++ b/vendor/squizlabs/php_codesniffer/CodeSniffer/Tokenizers/PHP.php	Fri Feb 23 15:52:07 2018 +0000
@@ -722,6 +722,7 @@
                 $newToken            = array();
                 $newToken['content'] = '?';
 
+                $prevNonEmpty = null;
                 for ($i = ($stackPtr - 1); $i >= 0; $i--) {
                     if (is_array($tokens[$i]) === true) {
                         $tokenType = $tokens[$i][0];
@@ -729,18 +730,31 @@
                         $tokenType = $tokens[$i];
                     }
 
+                    if ($prevNonEmpty === null
+                        && isset(PHP_CodeSniffer_Tokens::$emptyTokens[$tokenType]) === false
+                    ) {
+                        // Found the previous non-empty token.
+                        if ($tokenType === ':' || $tokenType === ',') {
+                            $newToken['code'] = T_NULLABLE;
+                            $newToken['type'] = 'T_NULLABLE';
+                            break;
+                        }
+
+                        $prevNonEmpty = $tokenType;
+                    }
+
                     if ($tokenType === T_FUNCTION) {
                         $newToken['code'] = T_NULLABLE;
                         $newToken['type'] = 'T_NULLABLE';
                         break;
-                    } else if (in_array($tokenType, array(T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, '{', ';')) === true) {
+                    } else if (in_array($tokenType, array(T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, '=', '{', ';')) === true) {
                         $newToken['code'] = T_INLINE_THEN;
                         $newToken['type'] = 'T_INLINE_THEN';
 
                         $insideInlineIf[] = $stackPtr;
                         break;
                     }
-                }
+                }//end for
 
                 $finalTokens[$newStackPtr] = $newToken;
                 $newStackPtr++;
@@ -1277,11 +1291,13 @@
                 // it is the start of an array being defined using the short syntax.
                 $isShortArray = false;
                 $allowed      = array(
-                                 T_CLOSE_SQUARE_BRACKET => T_CLOSE_SQUARE_BRACKET,
-                                 T_CLOSE_PARENTHESIS    => T_CLOSE_PARENTHESIS,
-                                 T_VARIABLE             => T_VARIABLE,
-                                 T_OBJECT_OPERATOR      => T_OBJECT_OPERATOR,
-                                 T_STRING               => T_STRING,
+                                 T_CLOSE_SQUARE_BRACKET     => T_CLOSE_SQUARE_BRACKET,
+                                 T_CLOSE_CURLY_BRACKET      => T_CLOSE_CURLY_BRACKET,
+                                 T_CLOSE_PARENTHESIS        => T_CLOSE_PARENTHESIS,
+                                 T_VARIABLE                 => T_VARIABLE,
+                                 T_OBJECT_OPERATOR          => T_OBJECT_OPERATOR,
+                                 T_STRING                   => T_STRING,
+                                 T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING,
                                 );
 
                 for ($x = ($i - 1); $x > 0; $x--) {
@@ -1293,13 +1309,6 @@
                         break;
                     }
 
-                    if (isset($tokens[$x]['bracket_opener']) === true
-                        && $x > $tokens[$x]['bracket_opener']
-                    ) {
-                        $x = $tokens[$x]['bracket_opener'];
-                        continue;
-                    }
-
                     if (isset(PHP_CodeSniffer_Tokens::$emptyTokens[$tokens[$x]['code']]) === false) {
                         if (isset($allowed[$tokens[$x]['code']]) === false) {
                             $isShortArray = true;
@@ -1307,7 +1316,7 @@
 
                         break;
                     }
-                }//end for
+                }
 
                 if ($isShortArray === true) {
                     $tokens[$i]['code'] = T_OPEN_SHORT_ARRAY;