diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index aa38462b..c4b3d8b1 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -156,6 +156,7 @@ phutil_register_library_map(array( 'ArcanistLinter' => 'lint/linter/ArcanistLinter.php', 'ArcanistLinterTestCase' => 'lint/linter/__tests__/ArcanistLinterTestCase.php', 'ArcanistLintersWorkflow' => 'workflow/ArcanistLintersWorkflow.php', + 'ArcanistListAssignmentXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistListAssignmentXHPASTLinterRule.php', 'ArcanistListWorkflow' => 'workflow/ArcanistListWorkflow.php', 'ArcanistLogicalOperatorsXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistLogicalOperatorsXHPASTLinterRule.php', 'ArcanistLowercaseFunctionsXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistLowercaseFunctionsXHPASTLinterRule.php', @@ -435,6 +436,7 @@ phutil_register_library_map(array( 'ArcanistLinter' => 'Phobject', 'ArcanistLinterTestCase' => 'PhutilTestCase', 'ArcanistLintersWorkflow' => 'ArcanistWorkflow', + 'ArcanistListAssignmentXHPASTLinterRule' => 'ArcanistXHPASTLinterRule', 'ArcanistListWorkflow' => 'ArcanistWorkflow', 'ArcanistLogicalOperatorsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule', 'ArcanistLowercaseFunctionsXHPASTLinterRule' => 'ArcanistXHPASTLinterRule', diff --git a/src/lint/linter/__tests__/xhpast/list-assignment.lint-test b/src/lint/linter/__tests__/xhpast/list-assignment.lint-test new file mode 100644 index 00000000..b9871b03 --- /dev/null +++ b/src/lint/linter/__tests__/xhpast/list-assignment.lint-test @@ -0,0 +1,11 @@ +selectDescendantsOfType('n_ASSIGNMENT_LIST'); + + foreach ($assignment_lists as $assignment_list) { + $tokens = array_slice($assignment_list->getTokens(), 1, -1); + + foreach (array_reverse($tokens) as $token) { + if ($token->getTypeName() == ',') { + $this->raiseLintAtToken( + $token, + pht('Unnecessary comma in list assignment.'), + ''); + continue; + } + + if ($token->isSemantic()) { + break; + } + } + } + } + +}