diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2019-01-20 08:23:41 +0100 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2019-01-20 18:46:44 +0100 |
commit | ec08b369ec1b348d8eeeffd3d48cb7138a918437 (patch) | |
tree | 6caa2c155f01d521effc72f0de6c54020b735762 /tests/headers.at | |
parent | 05b70f47e8583d8bf601210dcef3542cde1d9542 (diff) | |
download | bison-ec08b369ec1b348d8eeeffd3d48cb7138a918437.tar.gz |
c++: address -Wweak-vtables warnings
Reported by Derek Clegg
http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00021.html
aux/parser-internal.h:429:12: error: 'syntax_error' has no out-of-line virtual
method definitions; its vtable will be emitted in every translation unit
[-Werror,-Wweak-vtables]
struct syntax_error : std::runtime_error
To avoid this warning, we need syntax_error to have a virtual function
defined in a compilation unit. Let it be the destructor. To comply
with C++98, this dtor should be 'throw()'. Merely making YY_NOEXCEPT
be 'throw()' in C++98 triggers
errors (http://lists.gnu.org/archive/html/bug-bison/2019-01/msg00022.html),
so let's introduce YY_NOTHROW and flag only ~syntax_error with it.
Also, since we now have an explicit dtor, we need to provide an copy
ctor.
* configure.ac (warn_cxx): Add -Wweak-vtables.
* data/skeletons/c++.m4 (YY_NOTHROW): New.
(syntax_error): Declare the dtor, and define the copy ctor.
* data/skeletons/glr.cc, data/skeletons/lalr1.cc (~syntax_error):
Define.
Diffstat (limited to 'tests/headers.at')
-rw-r--r-- | tests/headers.at | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tests/headers.at b/tests/headers.at index 87b765dd..bcf8525f 100644 --- a/tests/headers.at +++ b/tests/headers.at @@ -330,6 +330,7 @@ AT_CHECK([[$PERL -n -0777 -e ' |YY_MOVE_OR_COPY |YY_MOVE_REF |YY_NOEXCEPT + |YY_NOTHROW |YY_NULLPTR |YY_RVREF |YY_\w+_INCLUDED |