mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-12-26 15:30:57 +01:00
Lint short ternary as PHP 5.3 feature
Summary: I don't offer a replacement because `f() ?: 1` converted to `f() ? f() : 1` can cause side effects and whitespace issues. Test Plan: New test. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D3489
This commit is contained in:
parent
a5e2f81928
commit
7ee0f3e3b3
2 changed files with 16 additions and 1 deletions
|
@ -404,6 +404,18 @@ final class ArcanistXHPASTLinter extends ArcanistLinter {
|
|||
}
|
||||
}
|
||||
|
||||
$ternaries = $root->selectDescendantsOfType('n_TERNARY_EXPRESSION');
|
||||
foreach ($ternaries as $ternary) {
|
||||
$yes = $ternary->getChildByIndex(1);
|
||||
if ($yes->getTypeName() == 'n_EMPTY') {
|
||||
$this->raiseLintAtNode(
|
||||
$ternary,
|
||||
self::LINT_PHP_53_FEATURES,
|
||||
'This codebase targets PHP 5.2, but short ternary was not '.
|
||||
'introduced until PHP 5.3.');
|
||||
}
|
||||
}
|
||||
|
||||
$this->lintPHP53Functions($root);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,13 @@ f(function() {});
|
|||
g(function() use ($c) {});
|
||||
h(function /* ! */ () use ($c) {});
|
||||
static::m();
|
||||
1 ? 1 : 2;
|
||||
1 ?: 2;
|
||||
~~~~~~~~~~
|
||||
disabled:3:1
|
||||
disabled:4:5
|
||||
disabled:5:3
|
||||
disabled:6:3
|
||||
disabled:7:3
|
||||
disabled:8:1
|
||||
disabled:8:1
|
||||
disabled:10:1
|
Loading…
Reference in a new issue