Hi Rob, Le 3 avr. 2013 à 17:32, Akim Demaille <[email protected]> a écrit :
>> Ok - here we go: >> >> Visual Studio 2010 warning level 4 >> >> stack.hh generates warning 4512 >> lalr1.cc generates warning 4512 for the parser class I have addressed these as follows: commit e83be476a515a38f874e75a109430061c9198e4b Author: Akim Demaille <[email protected]> Date: Mon Apr 8 10:54:12 2013 +0200 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. diff --git a/NEWS b/NEWS index b499cc1..ead8478 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 9b24974..0244a19 100644 --- a/THANKS +++ b/THANKS @@ -103,6 +103,7 @@ Ralf Wildenhues [email protected] Richard Stallman [email protected] Rob Vermaas [email protected] Robert Anisko [email protected] +Rob Conde [email protected] Satya Kiran Popuri [email protected] Sebastian Setzer [email protected] Sebastien Fricker [email protected] diff --git a/data/lalr1.cc b/data/lalr1.cc index 237b246..68de8b4 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 ab1049c..8f62860 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_; };
