Page MenuHomePhabricator

D13859.id33486.diff
No OneTemporary

D13859.id33486.diff

diff --git a/src/lint/linter/__tests__/phlxhp/array-formatting.lint-test b/src/lint/linter/__tests__/phlxhp/array-formatting.lint-test
new file mode 100644
--- /dev/null
+++ b/src/lint/linter/__tests__/phlxhp/array-formatting.lint-test
@@ -0,0 +1,16 @@
+<?php
+
+array ( 1, 2, 3 );
+list ( $x, $y ) = array();
+~~~~~~~~~~
+warning:3:6
+warning:3:8
+warning:3:16
+warning:4:5
+warning:4:7
+warning:4:14
+~~~~~~~~~~
+<?php
+
+array(1, 2, 3);
+list($x, $y) = array();
diff --git a/src/lint/linter/xhpast/rules/ArcanistCallParenthesesXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistCallParenthesesXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistCallParenthesesXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistCallParenthesesXHPASTLinterRule.php
@@ -14,13 +14,33 @@
}
public function process(XHPASTNode $root) {
- $calls = $root->selectDescendantsOfTypes(array(
+ $nodes = $root->selectDescendantsOfTypes(array(
+ 'n_ARRAY_LITERAL',
'n_FUNCTION_CALL',
'n_METHOD_CALL',
+ 'n_LIST',
));
- foreach ($calls as $call) {
- $params = $call->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
+ foreach ($nodes as $node) {
+ switch ($node->getTypeName()) {
+ case 'n_ARRAY_LITERAL':
+ $params = $node->getChildOfType(0, 'n_ARRAY_VALUE_LIST');
+ break;
+
+ case 'n_FUNCTION_CALL':
+ case 'n_METHOD_CALL':
+ $params = $node->getChildOfType(1, 'n_CALL_PARAMETER_LIST');
+ break;
+
+ case 'n_LIST':
+ $params = $node->getChildOfType(0, 'n_ASSIGNMENT_LIST');
+ break;
+
+ default:
+ throw new Exception(
+ pht("Unexpected node of type '%s'!", $node->getTypeName()));
+ }
+
$tokens = $params->getTokens();
$first = head($tokens);
@@ -29,17 +49,13 @@
if (preg_match('/^\s+$/', $leading_text)) {
$this->raiseLintAtOffset(
$first->getOffset() - strlen($leading_text),
- pht('Convention: no spaces before opening parenthesis in calls.'),
+ pht('Convention: no spaces before opening parentheses.'),
$leading_text,
'');
}
- }
- foreach ($calls as $call) {
// If the last parameter of a call is a HEREDOC, don't apply this rule.
- $params = $call
- ->getChildOfType(1, 'n_CALL_PARAMETER_LIST')
- ->getChildren();
+ $params = $params->getChildren();
if ($params) {
$last_param = last($params);
@@ -48,15 +64,19 @@
}
}
- $tokens = $call->getTokens();
+ $tokens = $node->getTokens();
$last = array_pop($tokens);
+ if ($node->getTypeName() == 'n_ARRAY_LITERAL') {
+ continue;
+ }
+
$trailing = $last->getNonsemanticTokensBefore();
$trailing_text = implode('', mpull($trailing, 'getValue'));
if (preg_match('/^\s+$/', $trailing_text)) {
$this->raiseLintAtOffset(
$last->getOffset() - strlen($trailing_text),
- pht('Convention: no spaces before closing parenthesis in calls.'),
+ pht('Convention: no spaces before closing parentheses.'),
$trailing_text,
'');
}
diff --git a/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistParenthesesSpacingXHPASTLinterRule.php
@@ -15,11 +15,13 @@
public function process(XHPASTNode $root) {
$all_paren_groups = $root->selectDescendantsOfTypes(array(
+ 'n_ARRAY_VALUE_LIST',
+ 'n_ASSIGNMENT_LIST',
'n_CALL_PARAMETER_LIST',
+ 'n_DECLARATION_PARAMETER_LIST',
'n_CONTROL_CONDITION',
'n_FOR_EXPRESSION',
'n_FOREACH_EXPRESSION',
- 'n_DECLARATION_PARAMETER_LIST',
));
foreach ($all_paren_groups as $group) {
diff --git a/src/unit/engine/ArcanistConfigurationDrivenUnitTestEngine.php b/src/unit/engine/ArcanistConfigurationDrivenUnitTestEngine.php
--- a/src/unit/engine/ArcanistConfigurationDrivenUnitTestEngine.php
+++ b/src/unit/engine/ArcanistConfigurationDrivenUnitTestEngine.php
@@ -97,14 +97,17 @@
$ex);
}
- $include = (array)idx($spec, 'include', array());
- $exclude = (array)idx($spec, 'exclude', array());
- $paths = $this->matchPaths(
- $all_paths,
- $include,
- $exclude);
-
- $test_engine->setPaths($paths);
+ if ($all_paths) {
+ $include = (array)idx($spec, 'include', array());
+ $exclude = (array)idx($spec, 'exclude', array());
+ $paths = $this->matchPaths(
+ $all_paths,
+ $include,
+ $exclude);
+
+ $test_engine->setPaths($paths);
+ }
+
$built_test_engines[] = $test_engine;
}

File Metadata

Mime Type
text/plain
Expires
Fri, Oct 11, 7:17 PM (21 h, 51 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6695272
Default Alt Text
D13859.id33486.diff (4 KB)

Event Timeline