Commit d76ba10d by Bernd Edlinger Committed by Bernd Edlinger

re PR middle-end/84034 (incomplete warning message with dos line endings)

2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR diagnostic/84034
        * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
        Handle CR like TAB.
        (layout::print_source_line): Likewise.
        (test_get_line_width_without_trailing_whitespace): Add test cases.

From-SVN: r257120
parent 0f06be5a
2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR diagnostic/84034
* diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
Handle CR like TAB.
(layout::print_source_line): Likewise.
(test_get_line_width_without_trailing_whitespace): Add test cases.
2018-01-27 Jakub Jelinek <jakub@redhat.com> 2018-01-27 Jakub Jelinek <jakub@redhat.com>
PR middle-end/84040 PR middle-end/84040
......
...@@ -639,7 +639,7 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width) ...@@ -639,7 +639,7 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width)
while (result > 0) while (result > 0)
{ {
char ch = line[result - 1]; char ch = line[result - 1];
if (ch == ' ' || ch == '\t') if (ch == ' ' || ch == '\t' || ch == '\r')
result--; result--;
else else
break; break;
...@@ -648,7 +648,8 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width) ...@@ -648,7 +648,8 @@ get_line_width_without_trailing_whitespace (const char *line, int line_width)
gcc_assert (result <= line_width); gcc_assert (result <= line_width);
gcc_assert (result == 0 || gcc_assert (result == 0 ||
(line[result - 1] != ' ' (line[result - 1] != ' '
&& line[result -1] != '\t')); && line[result -1] != '\t'
&& line[result -1] != '\r'));
return result; return result;
} }
...@@ -673,9 +674,11 @@ test_get_line_width_without_trailing_whitespace () ...@@ -673,9 +674,11 @@ test_get_line_width_without_trailing_whitespace ()
assert_eq ("", 0); assert_eq ("", 0);
assert_eq (" ", 0); assert_eq (" ", 0);
assert_eq ("\t", 0); assert_eq ("\t", 0);
assert_eq ("\r", 0);
assert_eq ("hello world", 11); assert_eq ("hello world", 11);
assert_eq ("hello world ", 11); assert_eq ("hello world ", 11);
assert_eq ("hello world \t\t ", 11); assert_eq ("hello world \t\t ", 11);
assert_eq ("hello world\r", 11);
} }
#endif /* #if CHECKING_P */ #endif /* #if CHECKING_P */
...@@ -1176,8 +1179,8 @@ layout::print_source_line (int row, const char *line, int line_width, ...@@ -1176,8 +1179,8 @@ layout::print_source_line (int row, const char *line, int line_width,
else else
m_colorizer.set_normal_text (); m_colorizer.set_normal_text ();
} }
char c = *line == '\t' ? ' ' : *line; char c = *line;
if (c == '\0') if (c == '\0' || c == '\t' || c == '\r')
c = ' '; c = ' ';
if (c != ' ') if (c != ' ')
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment