Page MenuHomePhabricator

D9193.id21833.diff
No OneTemporary

D9193.id21833.diff

diff --git a/src/lint/linter/ArcanistXHPASTLinter.php b/src/lint/linter/ArcanistXHPASTLinter.php
--- a/src/lint/linter/ArcanistXHPASTLinter.php
+++ b/src/lint/linter/ArcanistXHPASTLinter.php
@@ -44,6 +44,7 @@
const LINT_REUSED_ITERATOR_REFERENCE = 39;
const LINT_KEYWORD_CASING = 40;
const LINT_DOUBLE_QUOTE = 41;
+ const LINT_ELSEIF_USAGE = 42;
private $naminghook;
private $switchhook;
@@ -101,6 +102,7 @@
self::LINT_REUSED_ITERATOR_REFERENCE => 'Reuse of Iterator References',
self::LINT_KEYWORD_CASING => 'Keyword Conventions',
self::LINT_DOUBLE_QUOTE => 'Unnecessary Double Quotes',
+ self::LINT_ELSEIF_USAGE => 'ElseIf Usage',
);
}
@@ -135,6 +137,7 @@
self::LINT_REUSED_ITERATOR_REFERENCE => $warning,
self::LINT_KEYWORD_CASING => $warning,
self::LINT_DOUBLE_QUOTE => $advice,
+ self::LINT_ELSEIF_USAGE => $advice,
// This is disabled by default because it implies a very strict policy
// which isn't necessary in the general case.
@@ -249,6 +252,7 @@
'lintClosingDeclarationParen' => self::LINT_CLOSING_DECL_PAREN,
'lintKeywordCasing' => self::LINT_KEYWORD_CASING,
'lintStrings' => self::LINT_DOUBLE_QUOTE,
+ 'lintElseIfStatements' => self::LINT_ELSEIF_USAGE,
);
foreach ($method_codes as $method => $codes) {
@@ -2438,6 +2442,18 @@
}
}
+ protected function lintElseIfStatements(XHPASTNode $root) {
+ $tokens = $root->selectTokensOfType('T_ELSEIF');
+
+ foreach ($tokens as $token) {
+ $this->raiseLintAtToken(
+ $token,
+ self::LINT_ELSEIF_USAGE,
+ pht('Usage of `else if` is preferred over `elseif`.'),
+ 'else if');
+ }
+ }
+
public function getSuperGlobalNames() {
return array(
'$GLOBALS',
diff --git a/src/lint/linter/__tests__/xhpast/elseif.lint-test b/src/lint/linter/__tests__/xhpast/elseif.lint-test
new file mode 100644
--- /dev/null
+++ b/src/lint/linter/__tests__/xhpast/elseif.lint-test
@@ -0,0 +1,19 @@
+<?php
+if (true) {
+ echo 'foo';
+} elseif (false) {
+ echo 'bar';
+} else if (null) {
+ echo 'baz';
+}
+~~~~~~~~~~
+advice:4:3
+~~~~~~~~~~
+<?php
+if (true) {
+ echo 'foo';
+} else if (false) {
+ echo 'bar';
+} else if (null) {
+ echo 'baz';
+}

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 7:28 AM (6 d, 16 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7389543
Default Alt Text
D9193.id21833.diff (2 KB)

Event Timeline