mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 14:52:40 +01:00
Restore the caret pointer ("^") for lint lines which only have a character offset
Summary: Ref T9846. This was dropped when I refactored how things are rendered; restore it. Test Plan: Added unit tests. Reviewers: chad Reviewed By: chad Maniphest Tasks: T9846 Differential Revision: https://secure.phabricator.com/D18511
This commit is contained in:
parent
86779b1526
commit
213ed3ff15
4 changed files with 31 additions and 2 deletions
|
@ -90,6 +90,7 @@ final class ArcanistConsoleLintRenderer extends ArcanistLintRenderer {
|
||||||
|
|
||||||
$old = $data;
|
$old = $data;
|
||||||
$old_lines = phutil_split_lines($old);
|
$old_lines = phutil_split_lines($old);
|
||||||
|
$start = $line;
|
||||||
|
|
||||||
if ($message->isPatchable()) {
|
if ($message->isPatchable()) {
|
||||||
$patch_offset = $line_map[$line] + ($char - 1);
|
$patch_offset = $line_map[$line] + ($char - 1);
|
||||||
|
@ -107,8 +108,6 @@ final class ArcanistConsoleLintRenderer extends ArcanistLintRenderer {
|
||||||
$old_impact = substr_count($original, "\n") + 1;
|
$old_impact = substr_count($original, "\n") + 1;
|
||||||
$new_impact = substr_count($replacement, "\n") + 1;
|
$new_impact = substr_count($replacement, "\n") + 1;
|
||||||
|
|
||||||
$start = $line;
|
|
||||||
|
|
||||||
// If lines at the beginning of the changed line range are actually the
|
// If lines at the beginning of the changed line range are actually the
|
||||||
// same, shrink the range. This happens when a patch just adds a line.
|
// same, shrink the range. This happens when a patch just adds a line.
|
||||||
do {
|
do {
|
||||||
|
@ -214,6 +213,14 @@ final class ArcanistConsoleLintRenderer extends ArcanistLintRenderer {
|
||||||
$spec['text'],
|
$spec['text'],
|
||||||
$chevron,
|
$chevron,
|
||||||
idx($spec, 'type'));
|
idx($spec, 'type'));
|
||||||
|
|
||||||
|
// If this is just a message and does not have a patch, put a little
|
||||||
|
// caret underneath the line to point out where the issue is.
|
||||||
|
if ($chevron) {
|
||||||
|
if (!$message->isPatchable() && !strlen($original)) {
|
||||||
|
$result[] = $this->renderCaret($char)."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return implode('', $result);
|
return implode('', $result);
|
||||||
|
|
|
@ -54,6 +54,13 @@ final class ArcanistConsoleLintRendererTestCase
|
||||||
'original' => '',
|
'original' => '',
|
||||||
'replacement' => "\n",
|
'replacement' => "\n",
|
||||||
),
|
),
|
||||||
|
|
||||||
|
'caret' => array(
|
||||||
|
'line' => 2,
|
||||||
|
'char' => 13,
|
||||||
|
'name' => 'Fruit Misinformation',
|
||||||
|
'description' => 'Arguably untrue.',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$defaults = array(
|
$defaults = array(
|
||||||
|
|
11
src/lint/renderer/__tests__/data/caret.expect
Normal file
11
src/lint/renderer/__tests__/data/caret.expect
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
>>> Lint for path/to/example.c:
|
||||||
|
|
||||||
|
|
||||||
|
Warning (WARN123) Fruit Misinformation
|
||||||
|
Arguably untrue.
|
||||||
|
|
||||||
|
1 Apples are round.
|
||||||
|
>>> 2 Bananas are round.
|
||||||
|
^
|
||||||
|
3 Cherries are round.
|
||||||
|
4 Dates are round.
|
4
src/lint/renderer/__tests__/data/caret.txt
Normal file
4
src/lint/renderer/__tests__/data/caret.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Apples are round.
|
||||||
|
Bananas are round.
|
||||||
|
Cherries are round.
|
||||||
|
Dates are round.
|
Loading…
Reference in a new issue