Arrays::isShortArray(): fix compatibility with older PHPCS versions #54
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.
Arrays::isShortArray(): add tests for PHPCS BC compatibility
The PHPCS tokenizer has had a number of issues over the years where the brackets for short arrays were being incorrectly tokenized.
These tests cover those situations.
Arrays::isShortArray(): 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 adding two convenience token arrays for working with arrays in older PHPCS versions to the
PHPCSUtils\Tokens\Collections
class.Ref: squizlabs/PHP_CodeSniffer#1971
Arrays::isShortArray(): fix compatibility with PHPCS < 2.9.0 [2]
Work around a bug in the tokenizer of PHPCS < 2.9.0 where array dereferencing of short arrays and string literals would be incorrectly tokenized as short array.
I.e. the square brackets in
'PHP'[0]
would be tokenized as short array.This commit adds work-arounds to the utility method to handle the situation correctly.
Ref: squizlabs/PHP_CodeSniffer#1381
Arrays::isShortArray(): fix compatibility with PHPCS 2.8.0 - 2.8.1 [3]
Work around a bug in the tokenizer of PHPCS 2.8.0 and 2.8.1 where array dereferencing of a variable variable would be incorrectly tokenized as short array.
This commit adds work-arounds to the utility method to handle the situation correctly.
Ref: squizlabs/PHP_CodeSniffer#1284
Arrays::isShortArray(): fix compatibility with PHPCS < 2.8.0 [4]
Work around a bug in the tokenizer of PHPCS < 2.8.0 where a
[
would be tokenized as T_OPEN_SQUARE_BRACKET instead of T_OPEN_SHORT_ARRAY if it was preceded by a close curly of a control structure.This commit adds work-arounds to the utility method to handle the situation correctly.
Ref: squizlabs/PHP_CodeSniffer#1284