Page MenuHomePhabricator

D13512.id32671.diff
No OneTemporary

D13512.id32671.diff

diff --git a/src/lint/linter/ArcanistBaseXHPASTLinter.php b/src/lint/linter/ArcanistBaseXHPASTLinter.php
--- a/src/lint/linter/ArcanistBaseXHPASTLinter.php
+++ b/src/lint/linter/ArcanistBaseXHPASTLinter.php
@@ -36,6 +36,29 @@
$replace);
}
+ final public function raiseLintAtTokens(
+ XHPASTToken $start_token,
+ XHPASTToken $end_token,
+ $code,
+ $desc,
+ $replace = null) {
+
+ $token = $start_token->getPrevToken();
+ $value = '';
+
+ while ($token != $end_token) {
+ $token = $token->getNextToken();
+ $value .= $token->getValue();
+ }
+
+ return $this->raiseLintAtOffset(
+ $start_token->getOffset(),
+ $code,
+ $desc,
+ $value,
+ $replace);
+ }
+
final public function raiseLintAtNode(
XHPASTNode $node,
$code,
diff --git a/src/lint/linter/__tests__/xhpast/creative-brace-use.lint-test b/src/lint/linter/__tests__/xhpast/creative-brace-use.lint-test
--- a/src/lint/linter/__tests__/xhpast/creative-brace-use.lint-test
+++ b/src/lint/linter/__tests__/xhpast/creative-brace-use.lint-test
@@ -32,7 +32,7 @@
do baz(); while ($x);
if ($x) {}
-else if ($y) {}
+elseif ($y) {}
else {}
declare(ticks = 1);
@@ -51,7 +51,7 @@
warning:31:6
warning:32:4
warning:34:11
-warning:35:16
+warning:35:15
~~~~~~~~~~
<?php
@@ -75,6 +75,6 @@
else bar();
do baz(); while ($x);
-if ($x) {} else if ($y) {} else {}
+if ($x) {} elseif ($y) {} else {}
declare(ticks = 1);
diff --git a/src/lint/linter/__tests__/xhpast/elseif.lint-test b/src/lint/linter/__tests__/xhpast/elseif.lint-test
--- a/src/lint/linter/__tests__/xhpast/elseif.lint-test
+++ b/src/lint/linter/__tests__/xhpast/elseif.lint-test
@@ -7,13 +7,13 @@
echo 'baz';
}
~~~~~~~~~~
-advice:4:3
+advice:6:3
~~~~~~~~~~
<?php
if (true) {
echo 'foo';
-} else if (false) {
+} elseif (false) {
echo 'bar';
-} else if (null) {
+} elseif (null) {
echo 'baz';
}
diff --git a/src/lint/linter/__tests__/xhpast/parens-hug-contents.lint-test b/src/lint/linter/__tests__/xhpast/parens-hug-contents.lint-test
--- a/src/lint/linter/__tests__/xhpast/parens-hug-contents.lint-test
+++ b/src/lint/linter/__tests__/xhpast/parens-hug-contents.lint-test
@@ -3,7 +3,7 @@
f( );
q( );
g();
-if ($x) {} else if ( $y ) {}
+if ($x) {} elseif ( $y ) {}
$obj->m(
$x,
@@ -24,8 +24,8 @@
warning:2:8
warning:3:3
warning:4:3
-warning:6:21
-warning:6:24
+warning:6:20
+warning:6:23
warning:12:6
warning:12:30
warning:13:10
@@ -43,7 +43,7 @@
f();
q();
g();
-if ($x) {} else if ($y) {}
+if ($x) {} elseif ($y) {}
$obj->m(
$x,
diff --git a/src/lint/linter/__tests__/xhpast/space-after-control-keywords.lint-test b/src/lint/linter/__tests__/xhpast/space-after-control-keywords.lint-test
--- a/src/lint/linter/__tests__/xhpast/space-after-control-keywords.lint-test
+++ b/src/lint/linter/__tests__/xhpast/space-after-control-keywords.lint-test
@@ -7,8 +7,8 @@
do{} while($x);
switch($x) {}
if ($x) {}
-else if ($y) {}
-else if ($z) {}
+elseif ($y) {}
+elseif ($z) {}
if ($x) {}
if
@@ -35,7 +35,7 @@
warning:7:6
warning:8:1
warning:9:11
-warning:10:16
+warning:10:15
warning:13:3
warning:14:3
warning:24:3
@@ -48,7 +48,7 @@
while ($x) {}
do {} while ($x);
switch ($x) {}
-if ($x) {} else if ($y) {} else if ($z) {}
+if ($x) {} elseif ($y) {} elseif ($z) {}
if ($x) {}
if ($x) {}
diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php
@@ -149,6 +149,20 @@
$replace);
}
+ final protected function raiseLintAtTokens(
+ XHPASTToken $start_token,
+ XHPASTToken $end_token,
+ $desc,
+ $replace = null) {
+
+ return $this->linter->raiseLintAtTokens(
+ $start_token,
+ $end_token,
+ $this->getLintID(),
+ $desc,
+ $replace);
+ }
+
/* -( Utility )------------------------------------------------------------ */
/**
diff --git a/src/lint/linter/xhpast/rules/ArcanistElseIfUsageXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistElseIfUsageXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistElseIfUsageXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistElseIfUsageXHPASTLinterRule.php
@@ -14,13 +14,21 @@
}
public function process(XHPASTNode $root) {
- $tokens = $root->selectTokensOfType('T_ELSEIF');
+ $nodes = $root->selectDescendantsOfType('n_ELSEIF');
- foreach ($tokens as $token) {
- $this->raiseLintAtToken(
- $token,
- pht('Usage of `%s` is preferred over `%s`.', 'else if', 'elseif'),
- 'else if');
+ foreach ($nodes as $node) {
+ $tokens = $node->getTokens();
+ $head_token = head($tokens);
+
+ if ($head_token->getTypeName() == 'T_ELSEIF') {
+ continue;
+ }
+
+ $this->raiseLintAtTokens(
+ $head_token,
+ $head_token->getNextToken()->getNextToken(),
+ pht('Usage of `%s` is preferred over `%s`.', 'elseif', 'else if'),
+ 'elseif');
}
}

File Metadata

Mime Type
text/plain
Expires
Fri, May 17, 9:29 AM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6298637
Default Alt Text
D13512.id32671.diff (5 KB)

Event Timeline