* testsuite/libstdc++-prettyprinters/cxx11.cc (struct datum):
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Aug 2012 18:37:30 +0000 (18:37 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Aug 2012 18:37:30 +0000 (18:37 +0000)
New.
(global): New global.
(main): Add test for unique_ptr.
* python/libstdcxx/v6/printers.py
(UniquePointerPrinter.to_string): Extract the pointer and also
print its type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190417 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/python/libstdcxx/v6/printers.py
libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc

index 9ffd3b3..26215b3 100644 (file)
@@ -1,3 +1,13 @@
+2012-08-15  Tom Tromey  <tromey@redhat.com>
+
+       * testsuite/libstdc++-prettyprinters/cxx11.cc (struct datum):
+       New.
+       (global): New global.
+       (main): Add test for unique_ptr.
+       * python/libstdcxx/v6/printers.py
+       (UniquePointerPrinter.to_string): Extract the pointer and also
+       print its type.
+
 2012-08-13  David Adler  <d.adler.s@gmail.com>
 
        PR libstdc++/54185
index 4520f32..0eac413 100644 (file)
@@ -71,7 +71,9 @@ class UniquePointerPrinter:
         self.val = val
 
     def to_string (self):
-        return self.val['_M_t']
+        v = self.val['_M_t']['_M_head_impl']
+        return ('std::unique_ptr<%s> containing %s' % (str(v.type.target()),
+                                                       str(v)))
 
 class StdListPrinter:
     "Print a std::list"
index 54b3275..0d01558 100644 (file)
@@ -48,6 +48,14 @@ use(const T &container)
     placeholder(*i);
 }
 
+struct datum
+{
+  std::string s;
+  int i;
+};
+
+std::unique_ptr<datum> global;
+
 int
 main()
 {
@@ -86,6 +94,11 @@ main()
   uoms.insert(5);
 // { dg-final { note-test uoms {std::unordered_multiset with 1 elements = {[0] = 5}} } }
 
+  std::unique_ptr<datum> uptr (new datum);
+  uptr->s = "hi bob";
+  uptr->i = 23;
+// { dg-final { regexp-test uptr {std::unique_ptr.datum. containing 0x.*} } }
+
   placeholder(""); // Mark SPOT
   use(efl);
   use(fl);
@@ -93,6 +106,8 @@ main()
   use(eumm);
   use(eus);
   use(eums);
+  use(uoms);
+  use(uptr->s);
 
   return 0;
 }