+ /* The caret of a multiline location ends with the first line. */
+ size_t len = loc.start.line != loc.end.line
+ ? ftell (caret_info.source) - caret_info.offset
+ : loc.end.column;
+ int i;
+
+ /* Print the carets (at least one), with the same indent as above.*/
+ fprintf (out, " %*s", loc.start.column - 1, "");
+ for (i = loc.start.column; i == loc.start.column || i < len; ++i)
+ putc ('^', out);
+ }
+ putc ('\n', out);