Skip to content

Commit

Permalink
Merge pull request #381 from PHPCSStandards/tokens/collection-add-new…
Browse files Browse the repository at this point in the history
…-shortarraylistopentokensbc

Collections: add new `shortArrayListOpenTokensBC()` token array
  • Loading branch information
jrfnl committed Oct 19, 2022
2 parents 18f5d8f + 8ee11f2 commit e11d8f9
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 25 deletions.
18 changes: 18 additions & 0 deletions PHPCSUtils/Tokens/Collections.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
* @method static array objectOperators() Object operator tokens.
* @method static array phpOpenTags() Tokens which open PHP.
* @method static array propertyModifierKeywords() Modifier keywords which can be used for a property declaration.
* @method static array shortArrayListOpenTokensBC() Tokens which can open a short array or short list
* (PHPCS cross-version compatible).
* @method static array shortArrayTokens() Tokens which are used for short arrays.
* @method static array shortArrayTokensBC() Tokens which are used for short arrays
* (PHPCS cross-version compatible).
Expand Down Expand Up @@ -577,6 +579,22 @@ final class Collections
\T_TYPE_INTERSECTION => \T_TYPE_INTERSECTION,
];

/**
* Tokens which can open a short array or short list (PHPCS cross-version compatible).
*
* Includes `T_OPEN_SQUARE_BRACKET` to allow for handling intermittent tokenizer issues related
* to the retokenization to `T_OPEN_SHORT_ARRAY`.
* Should only be used selectively.
*
* @since 1.0.0-alpha4 Use the {@see Collections::shortArrayListOpenTokensBC()} method for access.
*
* @return array <int|string> => <int|string>
*/
private static $shortArrayListOpenTokensBC = [
\T_OPEN_SHORT_ARRAY => \T_OPEN_SHORT_ARRAY,
\T_OPEN_SQUARE_BRACKET => \T_OPEN_SQUARE_BRACKET,
];

/**
* DEPRECATED: Tokens which are used for short arrays.
*
Expand Down
2 changes: 1 addition & 1 deletion PHPCSUtils/Utils/Lists.php
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ public static function isShortList(File $phpcsFile, $stackPtr)
$parentOpen = $opener;
do {
$parentOpen = $phpcsFile->findPrevious(
[\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET], // BC: PHPCS#1971.
Collections::shortArrayListOpenTokensBC(), // BC: PHPCS#1971.
($parentOpen - 1),
null,
false,
Expand Down
7 changes: 3 additions & 4 deletions PHPCSUtils/Utils/Namespaces.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,10 @@ public static function getType(File $phpcsFile, $stackPtr)
+ Tokens::$castTokens
+ Tokens::$blockOpeners
+ Collections::incrementDecrementOperators()
+ Collections::objectOperators();
+ Collections::objectOperators()
+ Collections::shortArrayListOpenTokensBC();

$findAfter[\T_OPEN_CURLY_BRACKET] = \T_OPEN_CURLY_BRACKET;
$findAfter[\T_OPEN_SQUARE_BRACKET] = \T_OPEN_SQUARE_BRACKET;
$findAfter[\T_OPEN_SHORT_ARRAY] = \T_OPEN_SHORT_ARRAY;
$findAfter[\T_OPEN_CURLY_BRACKET] = \T_OPEN_CURLY_BRACKET;
}

$tokens = $phpcsFile->getTokens();
Expand Down
11 changes: 3 additions & 8 deletions PHPCSUtils/Utils/PassedParameters.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ public static function hasParameters(File $phpcsFile, $stackPtr, $isShortArray =
}
}

if (($tokens[$stackPtr]['code'] === \T_OPEN_SHORT_ARRAY
|| $tokens[$stackPtr]['code'] === \T_OPEN_SQUARE_BRACKET)
if (isset(Collections::shortArrayListOpenTokensBC()[$tokens[$stackPtr]['code']]) === true
&& $isShortArray !== true
&& Arrays::isShortArray($phpcsFile, $stackPtr) === false
) {
Expand All @@ -119,9 +118,7 @@ public static function hasParameters(File $phpcsFile, $stackPtr, $isShortArray =
}

// Deal with short array syntax.
if ($tokens[$stackPtr]['code'] === \T_OPEN_SHORT_ARRAY
|| $tokens[$stackPtr]['code'] === \T_OPEN_SQUARE_BRACKET
) {
if (isset(Collections::shortArrayListOpenTokensBC()[$tokens[$stackPtr]['code']]) === true) {
if ($next === $tokens[$stackPtr]['bracket_closer']) {
// No parameters.
return false;
Expand Down Expand Up @@ -224,9 +221,7 @@ public static function getParameters(File $phpcsFile, $stackPtr, $limit = 0, $is
$tokens = $phpcsFile->getTokens();

// Mark the beginning and end tokens.
if ($tokens[$stackPtr]['code'] === \T_OPEN_SHORT_ARRAY
|| $tokens[$stackPtr]['code'] === \T_OPEN_SQUARE_BRACKET
) {
if (isset(Collections::shortArrayListOpenTokensBC()[$tokens[$stackPtr]['code']]) === true) {
$opener = $stackPtr;
$closer = $tokens[$stackPtr]['bracket_closer'];
} else {
Expand Down
1 change: 1 addition & 0 deletions Tests/Tokens/Collections/PropertyBasedTokenArraysTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public function dataPropertyBasedTokenArrays()
'objectOperators',
'phpOpenTags',
'propertyModifierKeywords',
'shortArrayListOpenTokensBC',
'shortArrayTokens',
'shortArrayTokensBC',
'shortListTokens',
Expand Down
3 changes: 2 additions & 1 deletion Tests/Utils/Arrays/GetOpenCloseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Arrays;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Arrays;

/**
Expand Down Expand Up @@ -46,7 +47,7 @@ public function testNonExistentToken()
*/
public function testNotArrayToken($testMarker)
{
$target = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$target = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$this->assertFalse(Arrays::getOpenClose(self::$phpcsFile, $target));
}

Expand Down
3 changes: 2 additions & 1 deletion Tests/Utils/Lists/GetAssignmentsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

use PHPCSUtils\Internal\Cache;
use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Lists;

/**
Expand Down Expand Up @@ -539,7 +540,7 @@ public function dataGetAssignments()
],
'short-list-with-keys-nested-lists' => [
'testMarker' => '/* testShortListWithKeysNestedLists */',
'targetToken' => [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET],
'targetToken' => Collections::shortArrayListOpenTokensBC(),
'expected' => [
0 => [
'raw' => '\'a\' => [&$a, $b]',
Expand Down
3 changes: 2 additions & 1 deletion Tests/Utils/Lists/GetOpenCloseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Lists;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Lists;

/**
Expand Down Expand Up @@ -46,7 +47,7 @@ public function testNonExistentToken()
*/
public function testNotListToken($testMarker)
{
$target = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$target = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$this->assertFalse(Lists::getOpenClose(self::$phpcsFile, $target));
}

Expand Down
5 changes: 3 additions & 2 deletions Tests/Utils/Lists/IsShortArrayOrListTokenizerBC1Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Lists;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Arrays;
use PHPCSUtils\Utils\Lists;

Expand Down Expand Up @@ -63,7 +64,7 @@ public function testValidDataProvider($ignore, $data)
*/
public function testIsShortArray($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Arrays::isShortArray(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['array'], $result);
Expand All @@ -83,7 +84,7 @@ public function testIsShortArray($testMarker, $expected)
*/
public function testIsShortList($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Lists::isShortList(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['list'], $result);
Expand Down
5 changes: 3 additions & 2 deletions Tests/Utils/Lists/IsShortArrayOrListTokenizerBC2Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Lists;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Arrays;
use PHPCSUtils\Utils\Lists;

Expand Down Expand Up @@ -63,7 +64,7 @@ public function testValidDataProvider($ignore, $data)
*/
public function testIsShortArray($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Arrays::isShortArray(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['array'], $result);
Expand All @@ -83,7 +84,7 @@ public function testIsShortArray($testMarker, $expected)
*/
public function testIsShortList($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Lists::isShortList(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['list'], $result);
Expand Down
5 changes: 3 additions & 2 deletions Tests/Utils/Lists/IsShortArrayOrListTokenizerBC3Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Lists;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Arrays;
use PHPCSUtils\Utils\Lists;

Expand Down Expand Up @@ -63,7 +64,7 @@ public function testValidDataProvider($ignore, $data)
*/
public function testIsShortArray($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Arrays::isShortArray(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['array'], $result);
Expand All @@ -83,7 +84,7 @@ public function testIsShortArray($testMarker, $expected)
*/
public function testIsShortList($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Lists::isShortList(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['list'], $result);
Expand Down
5 changes: 3 additions & 2 deletions Tests/Utils/Lists/IsShortArrayOrListTokenizerBC4Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\Lists;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\Arrays;
use PHPCSUtils\Utils\Lists;

Expand Down Expand Up @@ -63,7 +64,7 @@ public function testValidDataProvider($ignore, $data)
*/
public function testIsShortArray($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Arrays::isShortArray(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['array'], $result);
Expand All @@ -83,7 +84,7 @@ public function testIsShortArray($testMarker, $expected)
*/
public function testIsShortList($testMarker, $expected)
{
$stackPtr = $this->getTargetToken($testMarker, [\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]);
$stackPtr = $this->getTargetToken($testMarker, Collections::shortArrayListOpenTokensBC());
$result = Lists::isShortList(self::$phpcsFile, $stackPtr);

$this->assertSame($expected['list'], $result);
Expand Down
3 changes: 2 additions & 1 deletion Tests/Utils/PassedParameters/HasParametersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
namespace PHPCSUtils\Tests\Utils\PassedParameters;

use PHPCSUtils\TestUtils\UtilityMethodTestCase;
use PHPCSUtils\Tokens\Collections;
use PHPCSUtils\Utils\PassedParameters;

/**
Expand Down Expand Up @@ -113,7 +114,7 @@ public function testNotAShortArray()

$self = $this->getTargetToken(
'/* testShortListNotShortArray */',
[\T_OPEN_SHORT_ARRAY, \T_OPEN_SQUARE_BRACKET]
Collections::shortArrayListOpenTokensBC()
);
PassedParameters::hasParameters(self::$phpcsFile, $self);
}
Expand Down

0 comments on commit e11d8f9

Please sign in to comment.