aboutsummaryrefslogtreecommitdiffstats
path: root/ws_diag_control.h
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-02-24 03:52:23 -0800
committerGuy Harris <guy@alum.mit.edu>2018-02-24 13:25:04 +0000
commitc0b2d82fc4462370f7a280c14c61e57bc5a7f239 (patch)
tree28f0839a741142fa76870b3e13d953c2cc9d792f /ws_diag_control.h
parentf07d295fcf89f5a9bb58fd09bb875d56260faaab (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.h29
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
/*