Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New Utils\Lists class
This adds a new utility method:
isShortList()
- to check whether a short array is in actual fact a short list. Returns boolean.This method has been battle-tested in the past year or so in the PHPCompatibility standard.
This commit also adds two convenience token arrays for working with lists to the
PHPCSUtils\Tokens\Collections
class.Includes dedicated unit tests.
Lists::isShortList(): fix compatibility with PHPCS 2.8.0 - 3.2.3 [1]
PHPCS 2.8.0 - 3.2.3 contained a bug where a square open bracket
[
as the first code content after the PHP open tag in a file would be tokenized asT_OPEN_SQUARE_BRACKET
notT_OPEN_SHORT_ARRAY
.This is an edge-case bug as it can only occur when following the very first PHP open tag in a file and only if there is nothing before that open tag.
Either way, this commit adds work-arounds to the utility method to handle the situation correctly.
Includes unit tests.
Includes adding two convenience token arrays for working with lists in older PHPCS versions to the
PHPCSUtils\Tokens\Collections
class.Ref: squizlabs/PHP_CodeSniffer#1971
Lists::isShortList(): safeguard PHPCS cross-version compatibility [2]
Add unit tests safeguarding that the method handles upstream tokenizer bug 1381 correctly.
Ref: squizlabs/PHP_CodeSniffer#1381
Lists::isShortList(): fix compatibility with PHPCS < 2.8.0 [3]
PHPCS < 2.8.0 contained a bug where a square open bracket
[
directly following a closing curly would always be tokenized asT_OPEN_SQUARE_BRACKET
, presuming this was array dereferencing/assignment on a variable variable.If the closing curly however belonged to a control structure, this was incorrect and the token should have been changed to
T_OPEN_SHORT_ARRAY
.This commit adds work-arounds to the utility method to handle the situation correctly.
Includes unit tests.
Ref: squizlabs/PHP_CodeSniffer#1284