bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]