From c4269a634c6c7a1a3308d0530804623e34f05651 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 15 Aug 2012 18:37:30 +0000 Subject: [PATCH] cxx11.cc (struct datum): New. * 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. From-SVN: r190417 --- libstdc++-v3/ChangeLog | 10 ++++++++++ libstdc++-v3/python/libstdcxx/v6/printers.py | 4 +++- .../testsuite/libstdc++-prettyprinters/cxx11.cc | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9ffd3b367aa..26215b321f4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2012-08-15 Tom Tromey + + * 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 PR libstdc++/54185 diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index 4520f32ac13..0eac413bf4a 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -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" diff --git a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc index 54b32757894..0d015581478 100644 --- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc +++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc @@ -48,6 +48,14 @@ use(const T &container) placeholder(*i); } +struct datum +{ + std::string s; + int i; +}; + +std::unique_ptr 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 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; }