diff --git a/src/lint/linter/xhpast/rules/ArcanistBinaryExpressionSpacingXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistBinaryExpressionSpacingXHPASTLinterRule.php --- a/src/lint/linter/xhpast/rules/ArcanistBinaryExpressionSpacingXHPASTLinterRule.php +++ b/src/lint/linter/xhpast/rules/ArcanistBinaryExpressionSpacingXHPASTLinterRule.php @@ -54,6 +54,27 @@ ', '); break; } + + $prev = $token->getPrevToken(); + switch ($prev->getTypeName()) { + case 'T_WHITESPACE': + $prev_semantic = $prev->getPrevToken(); + if ($prev_semantic->getLineNumber() != $token->getLineNumber()) { + $this->raiseLintAtOffset( + $prev->getOffset(), + pht('Convention: comma should not be preceded by space.'), + $prev->getValue().$token->getvalue(), + ','.$prev->getValue()); + } else { + $this->raiseLintAtToken( + $prev, + pht('Convention: comma should not be preceded by space.'), + ''); + } + break; + default: + break; + } } $tokens = $root->selectTokensOfType('T_DOUBLE_ARROW'); diff --git a/src/lint/linter/xhpast/rules/__tests__/binary-expression-spacing/multiline.lint-test b/src/lint/linter/xhpast/rules/__tests__/binary-expression-spacing/multiline.lint-test new file mode 100644 --- /dev/null +++ b/src/lint/linter/xhpast/rules/__tests__/binary-expression-spacing/multiline.lint-test @@ -0,0 +1,19 @@ +