From 27ec3a2e34aab131e596ffa4560daef0c0fc8534 Mon Sep 17 00:00:00 2001 From: Joshua Spence Date: Wed, 19 Aug 2015 15:35:16 +1000 Subject: [PATCH] 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 --- src/lint/linter/__tests__/xhpast/array-formatting.lint-test | 4 ++++ .../rules/ArcanistCallParenthesesXHPASTLinterRule.php | 6 ++++++ .../rules/ArcanistParenthesesSpacingXHPASTLinterRule.php | 6 ------ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lint/linter/__tests__/xhpast/array-formatting.lint-test b/src/lint/linter/__tests__/xhpast/array-formatting.lint-test index 3dda317d..7ae23f5d 100644 --- a/src/lint/linter/__tests__/xhpast/array-formatting.lint-test +++ b/src/lint/linter/__tests__/xhpast/array-formatting.lint-test @@ -2,6 +2,7 @@ array ( 1, 2, 3 ); list ( $x, $y ) = array(); +[ 1, 2 , 3 ]; ~~~~~~~~~~ warning:3:6 warning:3:8 @@ -9,8 +10,11 @@ warning:3:16 warning:4:5 warning:4:7 warning:4:14 +warning:5:2 +warning:5:11 ~~~~~~~~~~ getTypeName()) { case 'n_ARRAY_LITERAL': + if (head($node->getTokens())->getTypeName() == '[') { + // Short array syntax. + continue 2; + } + $params = $node->getChildOfType(0, 'n_ARRAY_VALUE_LIST'); break; @@ -44,6 +49,7 @@ final class ArcanistCallParenthesesXHPASTLinterRule $tokens = $params->getTokens(); $first = head($tokens); + $leading = $first->getNonsemanticTokensBefore(); $leading_text = implode('', mpull($leading, 'getValue')); if (preg_match('/^\s+$/', $leading_text)) { diff --git a/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php index 7ad16a44..7d7f8c4d 100644 --- a/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php +++ b/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php @@ -29,12 +29,6 @@ final class ArcanistParenthesesSpacingXHPASTLinterRule $token_o = array_shift($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_c = $token_c->getNonsemanticTokensBefore();