diff --git a/src/lint/linter/ArcanistPyLintLinter.php b/src/lint/linter/ArcanistPyLintLinter.php --- a/src/lint/linter/ArcanistPyLintLinter.php +++ b/src/lint/linter/ArcanistPyLintLinter.php @@ -130,10 +130,15 @@ continue; } + // NOTE: PyLint sometimes returns -1 as the character offset for a + // message. If it does, treat it as 0. See T9257. + $char = (int)$matches[1]; + $char = max(0, $char); + $message = id(new ArcanistLintMessage()) ->setPath($path) ->setLine($matches[0]) - ->setChar($matches[1]) + ->setChar($char) ->setCode($matches[2]) ->setSeverity($this->getLintMessageSeverity($matches[2])) ->setName(ucwords(str_replace('-', ' ', $matches[3]))) diff --git a/src/lint/linter/__tests__/pylint/negativechar.lint-test b/src/lint/linter/__tests__/pylint/negativechar.lint-test new file mode 100644 --- /dev/null +++ b/src/lint/linter/__tests__/pylint/negativechar.lint-test @@ -0,0 +1,6 @@ +"""Docstring""" + +""" +Useless string """ +~~~~~~~~~~ +warning:4:0 See T9257. diff --git a/src/lint/linter/__tests__/xml/languages-7.lint-test b/src/lint/linter/__tests__/xml/languages-7.lint-test deleted file mode 100644 --- a/src/lint/linter/__tests__/xml/languages-7.lint-test +++ /dev/null @@ -1,7 +0,0 @@ - - - - -~~~~~~~~~~ -error:4:7 -error:5:1