diff --git a/src/location.c b/src/location.c
index 4e2bfd9b..b0d9f015 100644
--- a/src/location.c
+++ b/src/location.c
@@ -322,6 +322,10 @@ location_caret (location loc, const char *style, FILE *out)
/* If we skip the initial part, we insert "..." before. */
if (skip)
width -= 3;
+ /* If the end of line does not fit, we also need to truncate the
+ end, and leave "..." there. */
+ if (width < line_len - skip)
+ width -= 3;
/* Go back to the beginning of line. */
fseek (caret_info.file, caret_info.offset, SEEK_SET);
@@ -374,7 +378,10 @@ location_caret (location loc, const char *style, FILE *out)
opened = false;
}
if (width < caret_info.pos.column - skip)
- break;
+ {
+ fprintf (out, "...");
+ break;
+ }
}
putc ('\n', out);
}
diff --git a/tests/diagnostics.at b/tests/diagnostics.at
index dc041e6a..5eba7bad 100644
--- a/tests/diagnostics.at
+++ b/tests/diagnostics.at
@@ -350,22 +350,22 @@ exp: ABCDEFGHIJKLMNOPQRSTUVWXYZ
]],
[0],
[[input.y:9.36-61: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEF...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEF...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.64-89: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI
- | ^~~~~~~~~
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEF...
+ | ^~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEF...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.92-117: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ
| ... ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEF...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
]],
[[COLUMNS=80]])
@@ -377,22 +377,22 @@ exp: ABCDEFGHIJKLMNOPQRSTUVWXYZ
]],
[0],
[[input.y:9.36-61: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQ
- | ^~~~~~~~~~~~~~~~~
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMN...
+ | ^~~~~~~~~~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQ
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMN...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.64-89: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
- 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKL
+ 9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHI...
| ... ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQ
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMN...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.92-117: warning: symbol ABCDEFGHIJKLMNOPQRSTUVWXYZ redeclared [-Wother]
9 | ...TUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ
| ... ^~~~~~~~~~~~~~~~~~~~~~~~~~
input.y:9.8-33: previous declaration
- 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQ
+ 9 | %token ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMN...
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
]],
[[COLUMNS=60]])