mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-10 00:42:40 +01:00
Raise lint warning on missing space after comma
Summary: Saw this in a diff somewhere; complain about it. Test Plan: Unit coverage. Reviewers: btrahan, vrana, jungejason Reviewed By: btrahan CC: aran Maniphest Tasks: T1060 Differential Revision: https://secure.phabricator.com/D2153
This commit is contained in:
parent
f346ab7f9a
commit
2c599f8928
2 changed files with 45 additions and 21 deletions
|
@ -1333,35 +1333,56 @@ final class ArcanistXHPASTLinter extends ArcanistLinter {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function lintSpaceAroundBinaryOperators($root) {
|
protected function lintSpaceAroundBinaryOperators($root) {
|
||||||
|
|
||||||
|
// NOTE: '.' is parsed as n_CONCATENATION_LIST, not n_BINARY_EXPRESSION,
|
||||||
|
// so we don't select it here.
|
||||||
|
|
||||||
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
|
$expressions = $root->selectDescendantsOfType('n_BINARY_EXPRESSION');
|
||||||
foreach ($expressions as $expression) {
|
foreach ($expressions as $expression) {
|
||||||
$operator = $expression->getChildByIndex(1);
|
$operator = $expression->getChildByIndex(1);
|
||||||
$operator_value = $operator->getConcreteString();
|
$operator_value = $operator->getConcreteString();
|
||||||
if ($operator_value == '.') {
|
list($before, $after) = $operator->getSurroundingNonsemanticTokens();
|
||||||
// TODO: implement this check
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
list($before, $after) = $operator->getSurroundingNonsemanticTokens();
|
|
||||||
|
|
||||||
$replace = null;
|
$replace = null;
|
||||||
if (empty($before) && empty($after)) {
|
if (empty($before) && empty($after)) {
|
||||||
$replace = " {$operator_value} ";
|
$replace = " {$operator_value} ";
|
||||||
} else if (empty($before)) {
|
} else if (empty($before)) {
|
||||||
$replace = " {$operator_value}";
|
$replace = " {$operator_value}";
|
||||||
} else if (empty($after)) {
|
} else if (empty($after)) {
|
||||||
$replace = "{$operator_value} ";
|
$replace = "{$operator_value} ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($replace !== null) {
|
if ($replace !== null) {
|
||||||
$this->raiseLintAtNode(
|
$this->raiseLintAtNode(
|
||||||
$operator,
|
$operator,
|
||||||
self::LINT_BINARY_EXPRESSION_SPACING,
|
self::LINT_BINARY_EXPRESSION_SPACING,
|
||||||
'Convention: logical and arithmetic operators should be '.
|
'Convention: logical and arithmetic operators should be '.
|
||||||
'surrounded by whitespace.',
|
'surrounded by whitespace.',
|
||||||
$replace);
|
$replace);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tokens = $root->selectTokensOfType(',');
|
||||||
|
foreach ($tokens as $token) {
|
||||||
|
$next = $token->getNextToken();
|
||||||
|
switch ($next->getTypeName()) {
|
||||||
|
case ')':
|
||||||
|
case 'T_WHITESPACE':
|
||||||
|
break;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$this->raiseLintAtToken(
|
||||||
|
$token,
|
||||||
|
self::LINT_BINARY_EXPRESSION_SPACING,
|
||||||
|
'Convention: comma should be followed by space.',
|
||||||
|
', ');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Spacing around ".".
|
||||||
|
// TODO: Spacing around default parameter assignment in function/method
|
||||||
|
// declarations (which is not n_BINARY_EXPRESSION).
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function lintDynamicDefines($root) {
|
protected function lintDynamicDefines($root) {
|
||||||
|
|
|
@ -21,6 +21,7 @@ $prev = ($total == 1) ? $navids[0] : $navids[$total-1];
|
||||||
$next = ($total == 1) ? $navids[0] : $navids[$current+1];
|
$next = ($total == 1) ? $navids[0] : $navids[$current+1];
|
||||||
if ($x instanceof z &&$w) { }
|
if ($x instanceof z &&$w) { }
|
||||||
if ($x instanceof z && $w) { }
|
if ($x instanceof z && $w) { }
|
||||||
|
f(1,2);
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
warning:3:3
|
warning:3:3
|
||||||
warning:4:4
|
warning:4:4
|
||||||
|
@ -33,6 +34,7 @@ warning:11:3
|
||||||
warning:20:52
|
warning:20:52
|
||||||
warning:21:54
|
warning:21:54
|
||||||
warning:22:21
|
warning:22:21
|
||||||
|
warning:24:4
|
||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
<?php
|
<?php
|
||||||
$a + $b;
|
$a + $b;
|
||||||
|
@ -57,3 +59,4 @@ $prev = ($total == 1) ? $navids[0] : $navids[$total - 1];
|
||||||
$next = ($total == 1) ? $navids[0] : $navids[$current + 1];
|
$next = ($total == 1) ? $navids[0] : $navids[$current + 1];
|
||||||
if ($x instanceof z && $w) { }
|
if ($x instanceof z && $w) { }
|
||||||
if ($x instanceof z && $w) { }
|
if ($x instanceof z && $w) { }
|
||||||
|
f(1, 2);
|
||||||
|
|
Loading…
Reference in a new issue