mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
tests: enable -Wsign-compare and fix corresponding warnings
-Wsign-compare was disabled for bison's own code, following gnulib's approach. However, the generated parsers should not trigger such warnings. Reported by Efi Fogel. http://lists.gnu.org/archive/html/help-bison/2013-04/msg00018.html See also http://stackoverflow.com/questions/16101062 for the weird "-(unsigned)i" piece of code. * configure.ac (warn_tests): Enable -Wsign-compare. * data/location.cc (position::add_): New. (position::lines, position::columns): Use it. * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Fix signedness issues.
This commit is contained in:
1
THANKS
1
THANKS
@@ -38,6 +38,7 @@ Derek M. Jones derek@knosof.co.uk
|
|||||||
Di-an Jan dianj@freeshell.org
|
Di-an Jan dianj@freeshell.org
|
||||||
Dick Streefland dick.streefland@altium.nl
|
Dick Streefland dick.streefland@altium.nl
|
||||||
Didier Godefroy dg@ulysium.net
|
Didier Godefroy dg@ulysium.net
|
||||||
|
Efi Fogel efifogel@gmail.com
|
||||||
Enrico Scholz enrico.scholz@informatik.tu-chemnitz.de
|
Enrico Scholz enrico.scholz@informatik.tu-chemnitz.de
|
||||||
Eric Blake ebb9@byu.net
|
Eric Blake ebb9@byu.net
|
||||||
Evgeny Stambulchik fnevgeny@plasma-gate.weizmann.ac.il
|
Evgeny Stambulchik fnevgeny@plasma-gate.weizmann.ac.il
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ if test "$enable_gcc_warnings" = yes; then
|
|||||||
# -fno-color-diagnostics: Clang's use of colors in the error
|
# -fno-color-diagnostics: Clang's use of colors in the error
|
||||||
# messages is confusing the tests looking at the compiler's output
|
# messages is confusing the tests looking at the compiler's output
|
||||||
# (e.g., synclines.at).
|
# (e.g., synclines.at).
|
||||||
warn_tests='-Wundef -pedantic -fno-color-diagnostics'
|
warn_tests='-Wundef -pedantic -Wsign-compare -fno-color-diagnostics'
|
||||||
|
|
||||||
AC_LANG_PUSH([C])
|
AC_LANG_PUSH([C])
|
||||||
# Clang supports many of GCC's -W options, but only issues warnings
|
# Clang supports many of GCC's -W options, but only issues warnings
|
||||||
|
|||||||
@@ -55,20 +55,14 @@ m4_define([b4_position_define],
|
|||||||
if (count)
|
if (count)
|
||||||
{
|
{
|
||||||
column = ]b4_location_initial_column[u;
|
column = ]b4_location_initial_column[u;
|
||||||
line =
|
line = add_ (line, count, ]b4_location_initial_line[);
|
||||||
0 < count || -count < line
|
|
||||||
? line + count
|
|
||||||
: ]b4_location_initial_line[;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// (column related) Advance to the COUNT next columns.
|
/// (column related) Advance to the COUNT next columns.
|
||||||
void columns (int count = 1)
|
void columns (int count = 1)
|
||||||
{
|
{
|
||||||
column =
|
column = add_ (column, count, ]b4_location_initial_column[);
|
||||||
0 < count || -count < column
|
|
||||||
? column + count
|
|
||||||
: ]b4_location_initial_column[;
|
|
||||||
}
|
}
|
||||||
/** \} */
|
/** \} */
|
||||||
|
|
||||||
@@ -78,6 +72,15 @@ m4_define([b4_position_define],
|
|||||||
unsigned int line;
|
unsigned int line;
|
||||||
/// Current column number.
|
/// Current column number.
|
||||||
unsigned int column;
|
unsigned int column;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/// Compute max(min, lhs+rhs) (provided min <= lhs).
|
||||||
|
static unsigned int add_ (unsigned int lhs, int rhs, unsigned int min)
|
||||||
|
{
|
||||||
|
return (0 < rhs || -static_cast<unsigned int>(rhs) < lhs
|
||||||
|
? rhs + lhs
|
||||||
|
: min);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Add and assign a position.
|
/// Add and assign a position.
|
||||||
|
|||||||
@@ -605,11 +605,11 @@ static
|
|||||||
{
|
{
|
||||||
static unsigned int counter = 0;
|
static unsigned int counter = 0;
|
||||||
|
|
||||||
int c = ]AT_VAL[]m4_ifval([$6], [.ival])[ = counter++;
|
unsigned int c = ]AT_VAL[]m4_ifval([$6], [.ival])[ = counter++;
|
||||||
/* As in BASIC, line numbers go from 10 to 10. */
|
/* As in BASIC, line numbers go from 10 to 10. */
|
||||||
]AT_LOC_FIRST_LINE[ = ]AT_LOC_FIRST_COLUMN[ = 10 * c;
|
]AT_LOC_FIRST_LINE[ = ]AT_LOC_FIRST_COLUMN[ = 10 * c;
|
||||||
]AT_LOC_LAST_LINE[ = ]AT_LOC_LAST_COLUMN[ = ]AT_LOC_FIRST_LINE[ + 9;
|
]AT_LOC_LAST_LINE[ = ]AT_LOC_LAST_COLUMN[ = ]AT_LOC_FIRST_LINE[ + 9;
|
||||||
assert (0 <= c && c <= strlen (source));
|
assert (c <= strlen (source));
|
||||||
if (source[c])
|
if (source[c])
|
||||||
fprintf (stderr, "sending: '%c'", source[c]);
|
fprintf (stderr, "sending: '%c'", source[c]);
|
||||||
else
|
else
|
||||||
@@ -848,13 +848,13 @@ AT_CLEANUP
|
|||||||
|
|
||||||
|
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([])
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([], [ with union])
|
||||||
|
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"])
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [ with union])
|
||||||
|
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
|
||||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])
|
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [ with union])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user