diff --git a/configure.ac b/configure.ac index 0aa689ea..7fef652d 100644 --- a/configure.ac +++ b/configure.ac @@ -96,8 +96,8 @@ AM_CONDITIONAL([ENABLE_GCC_WARNINGS], [test "$enable_gcc_warnings" = yes]) if test "$enable_gcc_warnings" = yes; then warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align -fparse-all-comments -Wdocumentation - -Wformat -Wnull-dereference -Wpointer-arith -Wwrite-strings' - warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes' + -Wformat -Wnull-dereference -Wpointer-arith -Wshadow -Wwrite-strings' + warn_c='-Wbad-function-cast -Wstrict-prototypes' warn_cxx='-Wnoexcept' # Warnings for the test suite only. # diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc index d2bb7101..f3ad181c 100644 --- a/data/skeletons/lalr1.cc +++ b/data/skeletons/lalr1.cc @@ -896,8 +896,8 @@ b4_dollar_popdef])[]dnl [ // Default location. { - slice slice (yystack_, yylen); - YYLLOC_DEFAULT (yylhs.location, slice, yylen); + stack_type::slice range (yystack_, yylen); + YYLLOC_DEFAULT (yylhs.location, range, yylen); yyerror_range[1].location = yylhs.location; }]])[ diff --git a/data/skeletons/stack.hh b/data/skeletons/stack.hh index ee463494..926a6f8c 100644 --- a/data/skeletons/stack.hh +++ b/data/skeletons/stack.hh @@ -122,33 +122,32 @@ m4_define([b4_stack_define], return seq_.rend (); } + /// Present a slice of the top of a stack. + class slice + { + public: + slice (const stack& stack, int range) + : stack_ (stack) + , range_ (range) + {} + + const T& + operator[] (int i) const + { + return stack_[range_ - i]; + } + + private: + const stack& stack_; + int range_; + }; + private: stack (const stack&); stack& operator= (const stack&); /// The wrapped container. S seq_; }; - - /// Present a slice of the top of a stack. - template > - class slice - { - public: - slice (const S& stack, int range) - : stack_ (stack) - , range_ (range) - {} - - const T& - operator[] (int i) const - { - return stack_[range_ - i]; - } - - private: - const S& stack_; - int range_; - }; ]]) m4_ifdef([b4_stack_file], diff --git a/tests/c++.at b/tests/c++.at index fe803419..34ec13fb 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -420,8 +420,7 @@ namespace yy { static ]AT_YYLEX_PROTOTYPE[ - {]AT_LOCATION_IF([ - typedef parser::location_type location;])[ + { // The 5 is a syntax error whose recovery requires that we discard // the lookahead. This tests a regression, see // .