tests: fix invalid assignment when using variants in C++11
authorAkim Demaille <akim@lrde.epita.fr>
Thu, 25 Jul 2013 15:45:19 +0000 (17:45 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Thu, 25 Jul 2013 15:53:59 +0000 (17:53 +0200)
* tests/c++.at (Exception safety): In variant mode $$ is an instance
of Object.  Assigning YY_NULL in C++98 is incorrect, but behaves ok,
as it assigns YY_NULL=0 using Object::operator= (char v).  It is wrong
in C++11 as there is operator for "$$ = nullptr".

tests/c++.at

index 103a3f0..96f2ac1 100644 (file)
@@ -795,11 +795,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'     { ]AT_VARIANT_IF([], [$][$ = YY_NULL; 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'     { ]AT_VARIANT_IF([], [$][$ = YY_NULL; delete $][1]; )[YYABORT; }
+| error   { ]AT_VARIANT_IF([], [$][$ = YY_NULL; ])[yyerrok; }
 ;
 %%