diff options
author | Guy Harris <guy@alum.mit.edu> | 2018-02-24 03:52:23 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2018-02-24 13:25:04 +0000 |
commit | c0b2d82fc4462370f7a280c14c61e57bc5a7f239 (patch) | |
tree | 28f0839a741142fa76870b3e13d953c2cc9d792f /ws_diag_control.h | |
parent | f07d295fcf89f5a9bb58fd09bb875d56260faaab (diff) |
Suppress some warnings caused by a Berkeley YACC bug/misfeature.
Berkeley YACC generates a global declaration of yylval, or the
appropriately prefixed version of yylval, in the .h file, *even though
it's been told to generate a pure parser, meaning it doesn't have any
global variables*. Bison doesn't do this.
That causes a warning due to the local declaration in the parser
shadowing the global declaration.
So, if this is Berkeley YACC, and we have _Pragma, and have pragmas to
suppress diagnostics, we use it to turn off -Wshadow warnings.
Change-Id: Ia3fecd99fa18ca9b85f6b25f53ed36c60730fad9
Reviewed-on: https://code.wireshark.org/review/26080
Petri-Dish: Guy Harris <guy@alum.mit.edu>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'ws_diag_control.h')
-rw-r--r-- | ws_diag_control.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ws_diag_control.h b/ws_diag_control.h index 006794ee20..79742189a1 100644 --- a/ws_diag_control.h +++ b/ws_diag_control.h @@ -113,6 +113,13 @@ extern "C" { __pragma(warning(disable:4244)) \ __pragma(warning(disable:4267)) #define DIAG_ON_FLEX __pragma(warning(pop)) + + /* + * XXX - is there an issue with shadowed definitions with MSVC if + * somebody were to happen to use Berkeley YACC rather than Bison? + */ + #define DIAG_OFF_BYACC + #define DIAG_ON_BYACC #else /* * Suppress: @@ -145,6 +152,28 @@ extern "C" { #define DIAG_ON_FLEX \ DIAG_ON(sign-compare) #endif + + /* + * Berkeley YACC generates a global declaration of yylval, or the + * appropriately prefixed version of yylval, in grammar.h, *even + * though it's been told to generate a pure parser, meaning it + * doesn't have any global variables*. Bison doesn't do this. + * + * That causes a warning due to the local declaration in the parser + * shadowing the global declaration. + * + * So, if this is Berkeley YACC, and we have _Pragma, and have pragmas + * to suppress diagnostics, we use it to turn off -Wshadow warnings. + */ + #ifdef YYBYACC + #define DIAG_OFF_BYACC \ + DIAG_OFF(shadow) + #define DIAG_ON_BYACC \ + DIAG_ON(SHADOW) + #else + #define DIAG_OFF_BYACC + #define DIAG_ON_BYACC + #endif #endif /* |