[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 2.7: Warnings in yacc.c
From: |
Akim Demaille |
Subject: |
Re: 2.7: Warnings in yacc.c |
Date: |
Mon, 8 Apr 2013 12:04:05 +0200 |
Hi Rob,
Le 3 avr. 2013 à 17:32, Akim Demaille <address@hidden> 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 <address@hidden>
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 address@hidden
Richard Stallman address@hidden
Rob Vermaas address@hidden
Robert Anisko address@hidden
+Rob Conde address@hidden
Satya Kiran Popuri address@hidden
Sebastian Setzer address@hidden
Sebastien Fricker address@hidden
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_;
};