doc: work around warnings when Flex C output is compiled in C++

* doc/bison.texi (calc++/scanner.ll): here.
While at it, clarify clang vs. warnings.
This commit is contained in:
Akim Demaille
2019-11-16 10:05:29 +01:00
parent cd726fdc4d
commit dbd6975b5c

View File

@@ -12247,17 +12247,27 @@ then the parser's to get the set of defined tokens.
@comment file: calc++/scanner.ll @comment file: calc++/scanner.ll
@example @example
%@{ %@{
#if defined __clang__
# define CLANG_VERSION (__clang_major__ * 100 + __clang_minor__)
#endif
// Clang and ICC like to pretend they are GCC.
#if defined __GNUC__ && !defined __clang__ && !defined __ICC
# define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
#endif
// Pacify warnings in yy_init_buffer (observed with Flex 2.6.4) // Pacify warnings in yy_init_buffer (observed with Flex 2.6.4)
// and GCC 6.4.0, 7.3.0. // and GCC 6.4.0, 7.3.0 with -O3.
#if defined __GNUC__ && !defined __clang__ && 6 <= __GNUC__ #if defined GCC_VERSION && 600 <= GCC_VERSION
# pragma GCC diagnostic ignored "-Wnull-dereference" # pragma GCC diagnostic ignored "-Wnull-dereference"
#endif #endif
// This example uses Flex's C backend, yet compiles it as C++. // This example uses Flex's C backend, yet compiles it as C++.
// So expect warnings about C style casts and NULL. // So expect warnings about C style casts and NULL.
#if defined __clang__ #if defined CLANG_VERSION && 500 <= CLANG_VERSION
# pragma clang diagnostic ignored "-Wold-style-cast"
# pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant" # pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#elif defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ #elif defined GCC_VERSION && 407 <= GCC_VERSION
# pragma GCC diagnostic ignored "-Wold-style-cast" # pragma GCC diagnostic ignored "-Wold-style-cast"
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif #endif
@@ -12272,27 +12282,27 @@ then the parser's to get the set of defined tokens.
// * @param line_number // * @param line_number
// ~~~~~~~~~~~~~~~~~^ // ~~~~~~~~~~~~~~~~~^
// 1 error generated. // 1 error generated.
#if FLEX_VERSION < 206 && defined __clang__ #if FLEX_VERSION < 206 && defined CLANG_VERSION
# pragma clang diagnostic ignored "-Wdocumentation" # pragma clang diagnostic ignored "-Wdocumentation"
#endif #endif
// Old versions of Flex (2.5.35) use 'register'. Warnings introduced in // Old versions of Flex (2.5.35) use 'register'. Warnings introduced in
// GCC 7 and Clang 6. // GCC 7 and Clang 6.
#if FLEX_VERSION < 206 #if FLEX_VERSION < 206
# if defined __clang__ && 6 <= __clang_major__ # if defined CLANG_VERSION && 600 <= CLANG_VERSION
# pragma clang diagnostic ignored "-Wdeprecated-register" # pragma clang diagnostic ignored "-Wdeprecated-register"
# elif defined __GNUC__ && 7 <= __GNUC__ # elif defined GCC_VERSION && 700 <= GCC_VERSION
# pragma GCC diagnostic ignored "-Wregister" # pragma GCC diagnostic ignored "-Wregister"
# endif # endif
#endif #endif
#if FLEX_VERSION < 206 #if FLEX_VERSION < 206
# if defined __clang__ # if defined CLANG_VERSION
# pragma clang diagnostic ignored "-Wconversion" # pragma clang diagnostic ignored "-Wconversion"
# pragma clang diagnostic ignored "-Wdocumentation" # pragma clang diagnostic ignored "-Wdocumentation"
# pragma clang diagnostic ignored "-Wshorten-64-to-32" # pragma clang diagnostic ignored "-Wshorten-64-to-32"
# pragma clang diagnostic ignored "-Wsign-conversion" # pragma clang diagnostic ignored "-Wsign-conversion"
# elif defined __GNUC__ # elif defined GCC_VERSION
# pragma GCC diagnostic ignored "-Wconversion" # pragma GCC diagnostic ignored "-Wconversion"
# pragma GCC diagnostic ignored "-Wsign-conversion" # pragma GCC diagnostic ignored "-Wsign-conversion"
# endif # endif