From e39fcdda38f0b334baf3cd4556a218129cd151f7 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 19 Feb 2013 17:44:08 +0100 Subject: [PATCH] tests: fix invalid C++11 code * 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 9d950037..e7048ac2 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 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; } ; %% -- 2.47.2