From: Akim Demaille Date: Mon, 8 Apr 2013 08:54:12 +0000 (+0200) Subject: lalr1.cc: fix compiler warnings X-Git-Tag: v2.7.1~9 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/e83be476a515a38f874e75a109430061c9198e4b?hp=--cc lalr1.cc: fix compiler warnings Reported by Rob Conde. http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html * data/stack.hh (operator=, stack(const stack&)): Make this class uncopyable, i.e., "undefine" these operators: make them private and don't implement them. (clear): New. * data/lalr1.cc: Use it instead of an assignment. (parser): Make this class uncopyable. --- e83be476a515a38f874e75a109430061c9198e4b diff --git a/NEWS b/NEWS index b499cc13..ead84788 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,8 @@ GNU Bison NEWS With locations enabled, __attribute__ was used unprotected. +*** Fix some compiler warnings (lalr1.cc) + * Noteworthy changes in release 2.7 (2012-12-12) [stable] ** Bug fixes diff --git a/THANKS b/THANKS index 9b24974f..0244a19e 100644 --- a/THANKS +++ b/THANKS @@ -103,6 +103,7 @@ Ralf Wildenhues Ralf.Wildenhues@gmx.de Richard Stallman rms@gnu.org Rob Vermaas rob.vermaas@gmail.com Robert Anisko anisko_r@epita.fr +Rob Conde rob.conde@ai-solutions.com Satya Kiran Popuri satyakiran@gmail.com Sebastian Setzer sebastian.setzer.ext@siemens.com Sebastien Fricker sebastien.fricker@gmail.com diff --git a/data/lalr1.cc b/data/lalr1.cc index 237b246f..68de8b40 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -107,6 +107,10 @@ b4_user_stype #endif private: + /// This class is not copyable. + ]b4_parser_class_name[ (const ]b4_parser_class_name[&); + ]b4_parser_class_name[& operator= (const ]b4_parser_class_name[&); + /// Report a syntax error. /// \param loc where the syntax error is found. /// \param msg a description of the syntax error. @@ -552,9 +556,9 @@ b4_dollar_popdef])[]dnl yynewstate, since the latter expects the semantical and the location values to have been already stored, initialize these stacks with a primary value. */ - yystate_stack_ = state_stack_type (0); - yysemantic_stack_ = semantic_stack_type (0); - yylocation_stack_ = location_stack_type (0); + yystate_stack_.clear (); + yysemantic_stack_.clear (); + yylocation_stack_.clear (); yysemantic_stack_.push (yylval); yylocation_stack_.push (yylloc); diff --git a/data/stack.hh b/data/stack.hh index ab1049c1..8f628607 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -77,6 +77,12 @@ b4_copyright([Stack handling for Bison parsers in C++], seq_.pop_front (); } + void + clear () + { + seq_.clear (); + } + inline unsigned int height () const @@ -88,6 +94,8 @@ b4_copyright([Stack handling for Bison parsers in C++], inline const_iterator end () const { return seq_.rend (); } private: + stack (const stack&); + stack& operator= (const stack&); S seq_; };