1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 14:52:40 +01:00

Add a lint error about use of PHP short array syntax ('[...]')

Summary: Ref T11409. Add lint to detect using `[...]` to define arrays. This doesn't work in PHP 5.2/5.3, which some of our users run.

Test Plan:
  - Ran `arc unit`.
  - Ran `arc lint src/applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php` to detect the issue in T11409.

Reviewers: yelirekim, chad

Reviewed By: chad

Maniphest Tasks: T11409

Differential Revision: https://secure.phabricator.com/D16357
This commit is contained in:
epriestley 2016-08-01 04:24:13 -07:00
parent 06c641f92c
commit f20d4b15c7
2 changed files with 16 additions and 0 deletions

View file

@ -369,6 +369,19 @@ final class ArcanistPHPCompatibilityXHPASTLinterRule
} }
} }
$literals = $root->selectDescendantsOftype('n_ARRAY_LITERAL');
foreach ($literals as $literal) {
$open_token = head($literal->getTokens())->getValue();
if ($open_token == '[') {
$this->raiseLintAtNode(
$literal,
pht(
'The short array syntax ("[...]") was not introduced until '.
'PHP 5.4, but this codebase targets an earlier version of PHP. '.
'You can rewrite this expression using `array(...)` instead.'));
}
}
$closures = $this->getAnonymousClosures($root); $closures = $this->getAnonymousClosures($root);
foreach ($closures as $closure) { foreach ($closures as $closure) {
$static_accesses = $closure $static_accesses = $closure

View file

@ -22,12 +22,15 @@ final class SomeClass extends Phobject {
0b1; 0b1;
[];
~~~~~~~~~~ ~~~~~~~~~~
error:3:5 error:3:5
error:4:9 error:4:9
error:12:7 error:12:7
error:18:7 error:18:7
error:23:1 error:23:1
error:25:1
~~~~~~~~~~ ~~~~~~~~~~
~~~~~~~~~~ ~~~~~~~~~~
{ {