Locations without columns for command line arguments.

* src/location.c (location_print): Don't display negative columns.
	* src/location.h: Document this.
This commit is contained in:
Akim Demaille
2008-07-29 12:45:21 +02:00
parent 9b9e0a7d46
commit 56c5eca973
3 changed files with 20 additions and 8 deletions

View File

@@ -1,3 +1,9 @@
2008-11-07 Akim Demaille <demaille@gostai.com>
Locations without columns for command line arguments.
* src/location.c (location_print): Don't display negative columns.
* src/location.h: Document this.
2008-11-07 Akim Demaille <demaille@gostai.com>
Fix --help.

View File

@@ -1,5 +1,5 @@
/* Locations for Bison
Copyright (C) 2002, 2005, 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2002, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -101,9 +101,11 @@ void
location_print (FILE *out, location loc)
{
int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
fprintf (out, "%s:%d.%d",
fprintf (out, "%s:%d",
quotearg_n_style (3, escape_quoting_style, loc.start.file),
loc.start.line, loc.start.column);
loc.start.line);
if (0 <= loc.start.column)
fprintf (out, ".%d", loc.start.column);
if (loc.start.file != loc.end.file)
fprintf (out, "-%s:%d.%d",
@@ -111,7 +113,7 @@ location_print (FILE *out, location loc)
loc.end.line, end_col);
else if (loc.start.line < loc.end.line)
fprintf (out, "-%d.%d", loc.end.line, end_col);
else if (loc.start.column < end_col)
else if (0 <= loc.start.column && loc.start.column < end_col)
fprintf (out, "-%d", end_col);
}

View File

@@ -1,5 +1,5 @@
/* Locations for Bison
Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -31,9 +31,13 @@ typedef struct
If this is INT_MAX, the line number has overflowed. */
int line;
/* The (origin-1) column just after the boundary. This is neither a
byte count, nor a character count; it is a column count.
If this is INT_MAX, the column number has overflowed. */
/* If nonnegative, the (origin-1) column just after the boundary.
This is neither a byte count, nor a character count; it is a
column count. If this is INT_MAX, the column number has
overflowed.
Meaningless and not displayed if negative.
*/
int column;
} boundary;