diff options
-rw-r--r-- | wiretap/ascend.y | 6 | ||||
-rw-r--r-- | ws_diag_control.h | 29 |
2 files changed, 35 insertions, 0 deletions
diff --git a/wiretap/ascend.y b/wiretap/ascend.y index f97ed93a3b..99f2899099 100644 --- a/wiretap/ascend.y +++ b/wiretap/ascend.y @@ -148,12 +148,16 @@ XMIT-Max7:20: (task "_brouterControlTask" at 0xb094ac20, time: 1481.51) 20 octet #include "ascendtext.h" #include "ascend-int.h" #include "ascend.h" +DIAG_OFF_BYACC #include "ascend_scanner_lex.h" +DIAG_ON_BYACC #include "file_wrappers.h" #define NO_USER "<none>" extern void yyerror (void *yyscanner, ascend_state_t *state, FILE_T fh _U_, const char *s); + +DIAG_OFF_BYACC %} %union { @@ -429,6 +433,8 @@ datagroup: dataln %% +DIAG_ON_BYACC + /* Run the parser. */ int run_ascend_parser(FILE_T fh, wtap_rec *rec, guint8 *pd, 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 /* |