[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 8/8] tests: fix invalid C++11 code
From: |
Akim Demaille |
Subject: |
[PATCH 8/8] tests: fix invalid C++11 code |
Date: |
Tue, 19 Feb 2013 17:50:41 +0100 |
* tests/c++.at (Object): Somehow instances of Object were assigned
YY_NULL, which is 0 most of the time (that case passes), but is
nullptr in C++11, and there is nothing in Object to support such an
assignment (failure). Use 0 as value, and provide the needed
assignment operator.
Also, use a more natural order within the class definition.
---
tests/c++.at | 58 +++++++++++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 25 deletions(-)
diff --git a/tests/c++.at b/tests/c++.at
index 9d95003..e7048ac 100644
--- a/tests/c++.at
+++ b/tests/c++.at
@@ -613,14 +613,42 @@ $1
/// A class that counts its number of instances.
struct Object
{
+ char val;
+
+ Object (char v)
+ : val (v)
+ {
+ Object::instances.push_back(this);
+ log (this, "Object::Object");
+ }
+
+ Object ()
+ : val ('?')
+ {
+ Object::instances.push_back(this);
+ log (this, "Object::Object");
+ }
+
+ Object& operator= (char v)
+ {
+ val = v;
+ return *this;
+ }
+
+ ~Object ()
+ {
+ Object::instances.remove (this);
+ log (this, "Object::~Object");
+ }
+
+ // Static part.
typedef std::list<const Object*> objects;
static objects instances;
- char val;
static bool
empty ()
{
- return instances.empty();
+ return instances.empty ();
}
static void
@@ -643,26 +671,6 @@ $1
std::cerr << " }" << std::endl;
}
}
-
- Object (char v)
- : val (v)
- {
- instances.push_back(this);
- log (this, "Object::Object");
- }
-
- Object ()
- : val ('?')
- {
- instances.push_back(this);
- log (this, "Object::Object");
- }
-
- ~Object ()
- {
- instances.remove(this);
- log (this, "Object::~Object");
- }
};
}
@@ -725,11 +733,11 @@ item:
// Not just 'E', otherwise we reduce when 'E' is the lookahead, and
// then the stack is emptied, defeating the point of the test.
| 'E' 'a' { YYUSE($][1); $][$ = $][2; }
-| 'R' { $][$ = YY_NULL; ]AT_VARIANT_IF([], [delete $][1]; )[YYERROR; }
+| 'R' { $][$ = 0; ]AT_VARIANT_IF([], [delete $][1]; )[YYERROR; }
| 'p' { $][$ = $][1; }
| 's' { $][$ = $][1; throw std::runtime_error ("reduction"); }
-| 'T' { $][$ = YY_NULL; ]AT_VARIANT_IF([], [delete $][1]; )[YYABORT; }
-| error { $][$ = YY_NULL; yyerrok; }
+| 'T' { $][$ = 0; ]AT_VARIANT_IF([], [delete $][1]; )[YYABORT; }
+| error { $][$ = 0; yyerrok; }
;
%%
--
1.8.1.3
- [PATCH 0/8] {master} various clean ups, Akim Demaille, 2013/02/19
- [PATCH 8/8] tests: fix invalid C++11 code,
Akim Demaille <=
- [PATCH 4/8] style: rename variant private members, Akim Demaille, 2013/02/19
- [PATCH 3/8] style: space changes, Akim Demaille, 2013/02/19
- [PATCH 1/8] news: spell fixes, Akim Demaille, 2013/02/19
- [PATCH 2/8] variant: fix G++ 4.4 warnings, Akim Demaille, 2013/02/19
- [PATCH 7/8] tests: fix failures with G++ 4.8 in Flex scanner, Akim Demaille, 2013/02/19
- [PATCH 6/8] regen, Akim Demaille, 2013/02/19
- [PATCH 5/8] gnulib: update, Akim Demaille, 2013/02/19