mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 23:02:41 +01:00
Improve linter handling of short array syntax
Summary: Currently, linting PHP short array syntax (i.e. `[...]`) throws an exception ("Expected open parentheses"). This diff relaxes some restrictions which prevent short array syntax from linting with `ArcanistParenthesesSpacingXHPASTLinterRule`. Test Plan: Modified test cases. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: agenticarus, Korvin Differential Revision: https://secure.phabricator.com/D13895
This commit is contained in:
parent
4404e66735
commit
27ec3a2e34
3 changed files with 10 additions and 6 deletions
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
array ( 1, 2, 3 );
|
array ( 1, 2, 3 );
|
||||||
list ( $x, $y ) = array();
|
list ( $x, $y ) = array();
|
||||||
|
[ 1, 2 , 3 ];
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
warning:3:6
|
warning:3:6
|
||||||
warning:3:8
|
warning:3:8
|
||||||
|
@ -9,8 +10,11 @@ warning:3:16
|
||||||
warning:4:5
|
warning:4:5
|
||||||
warning:4:7
|
warning:4:7
|
||||||
warning:4:14
|
warning:4:14
|
||||||
|
warning:5:2
|
||||||
|
warning:5:11
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
array(1, 2, 3);
|
array(1, 2, 3);
|
||||||
list($x, $y) = array();
|
list($x, $y) = array();
|
||||||
|
[1, 2 , 3];
|
||||||
|
|
|
@ -24,6 +24,11 @@ final class ArcanistCallParenthesesXHPASTLinterRule
|
||||||
foreach ($nodes as $node) {
|
foreach ($nodes as $node) {
|
||||||
switch ($node->getTypeName()) {
|
switch ($node->getTypeName()) {
|
||||||
case 'n_ARRAY_LITERAL':
|
case 'n_ARRAY_LITERAL':
|
||||||
|
if (head($node->getTokens())->getTypeName() == '[') {
|
||||||
|
// Short array syntax.
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
|
||||||
$params = $node->getChildOfType(0, 'n_ARRAY_VALUE_LIST');
|
$params = $node->getChildOfType(0, 'n_ARRAY_VALUE_LIST');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -44,6 +49,7 @@ final class ArcanistCallParenthesesXHPASTLinterRule
|
||||||
$tokens = $params->getTokens();
|
$tokens = $params->getTokens();
|
||||||
$first = head($tokens);
|
$first = head($tokens);
|
||||||
|
|
||||||
|
|
||||||
$leading = $first->getNonsemanticTokensBefore();
|
$leading = $first->getNonsemanticTokensBefore();
|
||||||
$leading_text = implode('', mpull($leading, 'getValue'));
|
$leading_text = implode('', mpull($leading, 'getValue'));
|
||||||
if (preg_match('/^\s+$/', $leading_text)) {
|
if (preg_match('/^\s+$/', $leading_text)) {
|
||||||
|
|
|
@ -29,12 +29,6 @@ final class ArcanistParenthesesSpacingXHPASTLinterRule
|
||||||
|
|
||||||
$token_o = array_shift($tokens);
|
$token_o = array_shift($tokens);
|
||||||
$token_c = array_pop($tokens);
|
$token_c = array_pop($tokens);
|
||||||
if ($token_o->getTypeName() !== '(') {
|
|
||||||
throw new Exception(pht('Expected open parentheses.'));
|
|
||||||
}
|
|
||||||
if ($token_c->getTypeName() !== ')') {
|
|
||||||
throw new Exception(pht('Expected close parentheses.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$nonsem_o = $token_o->getNonsemanticTokensAfter();
|
$nonsem_o = $token_o->getNonsemanticTokensAfter();
|
||||||
$nonsem_c = $token_c->getNonsemanticTokensBefore();
|
$nonsem_c = $token_c->getNonsemanticTokensBefore();
|
||||||
|
|
Loading…
Reference in a new issue