mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-15 07:13:02 +00:00
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:
19
ChangeLog
19
ChangeLog
@@ -1,3 +1,22 @@
|
|||||||
|
2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
|
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 underexpanded 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.
|
||||||
|
|
||||||
2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
|
2009-04-03 Joel E. Denny <jdenny@ces.clemson.edu>
|
||||||
|
|
||||||
Pacify ./configure --enable-gcc-warnings.
|
Pacify ./configure --enable-gcc-warnings.
|
||||||
|
|||||||
@@ -680,10 +680,9 @@ m4_define([b4_percent_define_default],
|
|||||||
[m4_ifndef([b4_percent_define(]$1[)],
|
[m4_ifndef([b4_percent_define(]$1[)],
|
||||||
[m4_define([b4_percent_define(]$1[)], [$2])dnl
|
[m4_define([b4_percent_define(]$1[)], [$2])dnl
|
||||||
m4_define([b4_percent_define_loc(]$1[)],
|
m4_define([b4_percent_define_loc(]$1[)],
|
||||||
[[[[[Bison:b4_percent_define_default]:1.0]], [[[Bison:b4_percent_define_default]:1.0]]]])dnl
|
[[[[<skeleton default value>:-1.-1]],
|
||||||
m4_define([b4_percent_define_syncline(]$1[)],
|
[[<skeleton default value>:-1.-1]]]])dnl
|
||||||
[[]b4_syncline(1, [["[Bison:b4_percent_define_default]"]])[
|
m4_define([b4_percent_define_syncline(]$1[)], [[]])])])
|
||||||
]])])])
|
|
||||||
|
|
||||||
# b4_percent_define_check_values(VALUES)
|
# b4_percent_define_check_values(VALUES)
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/* Locations for Bison
|
/* Locations for Bison
|
||||||
Copyright (C) 2002, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
|
||||||
|
Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -100,21 +101,37 @@ location_compute (location *loc, boundary *cur, char const *token, size_t size)
|
|||||||
void
|
void
|
||||||
location_print (FILE *out, location loc)
|
location_print (FILE *out, location loc)
|
||||||
{
|
{
|
||||||
int end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
|
int end_col = 0 != loc.end.column ? loc.end.column - 1 : 0;
|
||||||
fprintf (out, "%s:%d",
|
fprintf (out, "%s",
|
||||||
quotearg_n_style (3, escape_quoting_style, loc.start.file),
|
quotearg_n_style (3, escape_quoting_style, loc.start.file));
|
||||||
loc.start.line);
|
if (0 <= loc.start.line)
|
||||||
if (0 <= loc.start.column)
|
{
|
||||||
fprintf (out, ".%d", loc.start.column);
|
fprintf(out, ":%d", loc.start.line);
|
||||||
|
if (0 <= loc.start.column)
|
||||||
|
fprintf (out, ".%d", loc.start.column);
|
||||||
|
}
|
||||||
if (loc.start.file != loc.end.file)
|
if (loc.start.file != loc.end.file)
|
||||||
fprintf (out, "-%s:%d.%d",
|
{
|
||||||
quotearg_n_style (3, escape_quoting_style, loc.end.file),
|
fprintf (out, "-%s",
|
||||||
loc.end.line, end_col);
|
quotearg_n_style (3, escape_quoting_style, loc.end.file));
|
||||||
else if (loc.start.line < loc.end.line)
|
if (0 <= loc.end.line)
|
||||||
fprintf (out, "-%d.%d", loc.end.line, end_col);
|
{
|
||||||
else if (0 <= loc.start.column && loc.start.column < end_col)
|
fprintf(out, ":%d", loc.end.line);
|
||||||
fprintf (out, "-%d", end_col);
|
if (0 <= end_col)
|
||||||
|
fprintf (out, ".%d", end_col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (0 <= loc.end.line)
|
||||||
|
{
|
||||||
|
if (loc.start.line < loc.end.line)
|
||||||
|
{
|
||||||
|
fprintf (out, "-%d", loc.end.line);
|
||||||
|
if (0 <= end_col)
|
||||||
|
fprintf (out, ".%d", end_col);
|
||||||
|
}
|
||||||
|
else if (0 <= end_col && loc.start.column < end_col)
|
||||||
|
fprintf (out, "-%d", end_col);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/* Locations for Bison
|
/* 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.
|
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. */
|
/* The name of the file that contains the boundary. */
|
||||||
uniqstr file;
|
uniqstr file;
|
||||||
|
|
||||||
/* The (origin-1) line that contains the boundary.
|
/* If nonnegative, the (origin-1) line that contains the boundary.
|
||||||
If this is INT_MAX, the line number has overflowed. */
|
If this is INT_MAX, the line number has overflowed.
|
||||||
|
|
||||||
|
Meaningless and not displayed if negative.
|
||||||
|
*/
|
||||||
int line;
|
int line;
|
||||||
|
|
||||||
/* If nonnegative, the (origin-1) column just after the boundary.
|
/* If nonnegative, the (origin-1) column just after the boundary.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* Muscle table manager for Bison.
|
/* Muscle table manager for Bison.
|
||||||
|
|
||||||
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
|
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
|
||||||
Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -539,13 +539,12 @@ muscle_percent_define_default (char const *variable, char const *value)
|
|||||||
{
|
{
|
||||||
location loc;
|
location loc;
|
||||||
MUSCLE_INSERT_STRING (name, value);
|
MUSCLE_INSERT_STRING (name, value);
|
||||||
loc.start.file = loc.end.file = "[Bison:muscle_percent_define_default]";
|
loc.start.file = loc.end.file = "<default value>";
|
||||||
loc.start.line = loc.end.line = 1;
|
loc.start.line = loc.end.line = -1;
|
||||||
loc.start.column = loc.end.column = 0;
|
loc.start.column = loc.end.column = -1;
|
||||||
muscle_insert (loc_name, "");
|
muscle_insert (loc_name, "");
|
||||||
muscle_location_grow (loc_name, loc);
|
muscle_location_grow (loc_name, loc);
|
||||||
muscle_insert (syncline_name, "");
|
muscle_insert (syncline_name, "");
|
||||||
muscle_syncline_grow (syncline_name, loc);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Checking skeleton support. -*- Autotest -*-
|
# Checking skeleton support. -*- Autotest -*-
|
||||||
# Copyright (C) 2007 Free Software Foundation, Inc.
|
# Copyright (C) 2007, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -159,7 +159,7 @@ start: ;
|
|||||||
]])
|
]])
|
||||||
|
|
||||||
AT_BISON_CHECK([[input.y]], [[1]], [[]],
|
AT_BISON_CHECK([[input.y]], [[1]], [[]],
|
||||||
[[[Bison:b4_percent_define_default]:1.0: invalid value for %define Boolean variable `foo'
|
[[<skeleton default value>: invalid value for %define Boolean variable `foo'
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|||||||
Reference in New Issue
Block a user