mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
deterministic user-token-number redeclaration errors.
Address nondeterminism reported by Joel E. Denny. http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00023.html * src/uniqstr.h: Comment changes. * src/location.h (boundary_cmp, location_cmp): New. * src/symtab.c (user_token_number_redeclaration): New. (symbol_translation): Use it. * tests/input.at (Numbered tokens): Adjust the expected output.
This commit is contained in:
@@ -55,6 +55,19 @@ boundary_set (boundary *b, const char *f, int l, int c)
|
||||
b->column = c;
|
||||
}
|
||||
|
||||
/* Return -1, 0, 1, depending whether a is before, equal, or
|
||||
after b. */
|
||||
static inline int
|
||||
boundary_cmp (boundary a, boundary b)
|
||||
{
|
||||
int res = strcmp (a.file, b.file);
|
||||
if (!res)
|
||||
res = a.line - b.line;
|
||||
if (!res)
|
||||
res = a.column - b.column;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Return nonzero if A and B are equal boundaries. */
|
||||
static inline bool
|
||||
equal_boundaries (boundary a, boundary b)
|
||||
@@ -87,6 +100,17 @@ void location_compute (location *loc,
|
||||
|
||||
void location_print (FILE *out, location loc);
|
||||
|
||||
/* Return -1, 0, 1, depending whether a is before, equal, or
|
||||
after b. */
|
||||
static inline int
|
||||
location_cmp (location a, location b)
|
||||
{
|
||||
int res = boundary_cmp (a.start, b.start);
|
||||
if (!res)
|
||||
res = boundary_cmp (a.end, b.end);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* LOC_STR must be formatted as `file:line.column', it will be modified. */
|
||||
void boundary_set_from_string (boundary *bound, char *loc_str);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user