]> git.saurik.com Git - bison.git/commitdiff
tests: fix %printer.
authorAkim Demaille <demaille@gostai.com>
Thu, 29 Apr 2010 10:35:13 +0000 (12:35 +0200)
committerAkim Demaille <demaille@gostai.com>
Tue, 4 May 2010 09:33:59 +0000 (11:33 +0200)
Currently, there is no check that %printer ... <foo> (nor
%destructor) is about an existing <foo> type.  This C++ test had
it wrong (<::std::string> vs. <std::string>).

* tests/c++.at (AT_CHECK_VARIANTS): In list.yy, redefine the
pretty-printing of lists into something better for parser traces.
Update the expected output.
Fix correspondance between %type/%token and %printer.

ChangeLog
tests/c++.at

index 3b3cd4e745be54c9927816f3fd95f0944070147f..8340bfd3ad08a2d100d2f2202dd209f94a20e28b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-05-04  Akim Demaille  <demaille@gostai.com>
+
+       tests: fix %printer.
+       Currently, there is no check that %printer ... <foo> (nor
+       %destructor) is about an existing <foo> type.  This C++ test had
+       it wrong (<::std::string> vs. <std::string>).
+
+       * tests/c++.at (AT_CHECK_VARIANTS): In list.yy, redefine the
+       pretty-printing of lists into something better for parser traces.
+       Update the expected output.
+       Fix correspondance between %type/%token and %printer.
+
 2010-05-04  Akim Demaille  <demaille@gostai.com>
 
        lalr1.cc: location_type: make sure we don't depend on loc.(begin|end).
index bcd98005adb674c3b8a2a37443be21e7df828cda..8377bfe91759a74bd5d3c0ed1e9e10abb5cb4761 100644 (file)
@@ -46,9 +46,7 @@ typedef std::list<std::string> strings_type;
 
 %code // code for the .cc file
 {
-#include <algorithm>
 #include <iostream>
-#include <iterator>
 #include <sstream>
 
   static
@@ -66,9 +64,14 @@ typedef std::list<std::string> strings_type;
     std::ostream&
     operator<<(std::ostream& o, const strings_type& s)
     {
-      std::copy(s.begin(), s.end(),
-                std::ostream_iterator<strings_type::value_type>(o, "\n"));
-      return o;
+      o << '(';
+      for (strings_type::const_iterator i = s.begin(); i != s.end (); ++i)
+        {
+          if (i != s.begin ())
+            o << ", ";
+          o << *i;
+        }
+      return o << ')';
     }
   }
 
@@ -84,11 +87,11 @@ typedef std::list<std::string> strings_type;
   }
 }
 
-%token <std::string> TEXT;
+%token <::std::string> TEXT;
 %token <int> NUMBER;
 %token END_OF_FILE 0;
 
-%type <std::string> item;
+%type <::std::string> item;
 // Using the template type to exercize its parsing.
 // Starting with :: to ensure we don't output "<::" which starts by the
 // digraph for the left square bracket.
@@ -99,7 +102,7 @@ typedef std::list<std::string> strings_type;
 %%
 
 result:
-  list          { std::cout << $][1; }
+  list          { std::cout << $][1 << std::endl; }
 ;
 
 list:
@@ -186,10 +189,7 @@ main (void)
 AT_BISON_CHECK([-o list.cc list.yy])
 AT_COMPILE_CXX([list])
 AT_CHECK([./list], 0,
-[0
-1
-2
-4
+         [(0, 1, 2, 4)
 ])
 
 AT_CLEANUP