Fix strange %define locations for default values.

Reported by Akim Demaille at
<http://lists.gnu.org/archive/html/bug-bison/2007-12/msg00001.html>
and discussed again starting at
<http://lists.gnu.org/archive/html/bison-patches/2008-11/msg00102.html>.
* data/bison.m4 (b4_percent_define_default): Leave syncline blank
because location information is bogus.
Use angle brackets to delimit fake file name because square brackets
look like over-quoted m4.  Choose a better fake file name.
Use negative line numbers.
* src/muscle_tab.c (muscle_percent_define_default): Likewise.
* src/location.c (location_print): If line for a boundary is negative,
only print that boundary's file name.
* src/location.h: Document that.
* tests/skeletons.at (%define Boolean variables: invalid skeleton
defaults): Update output.
This commit is contained in:
Joel E. Denny
2009-04-03 03:13:36 -04:00
parent e021191bcf
commit 92822affc5
6 changed files with 68 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
/* Locations for Bison
Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
Copyright (C) 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -27,8 +28,11 @@ typedef struct
/* The name of the file that contains the boundary. */
uniqstr file;
/* The (origin-1) line that contains the boundary.
If this is INT_MAX, the line number has overflowed. */
/* If nonnegative, the (origin-1) line that contains the boundary.
If this is INT_MAX, the line number has overflowed.
Meaningless and not displayed if negative.
*/
int line;
/* If nonnegative, the (origin-1) column just after the boundary.