Hi. This patch adds operator-> xmethod support for std::unique_ptr.
Regression tested on amd64-linux. Ok to commit? 2015-04-30 Doug Evans <d...@google.com> * python/libstdcxx/v6/xmethods.py (UniquePtrMethodsMatcher): Add operator-> support. * testsuite/libstdc++-xmethods/unique_ptr.cc: Add tests for operator->. Index: python/libstdcxx/v6/xmethods.py =================================================================== --- python/libstdcxx/v6/xmethods.py (revision 222651) +++ python/libstdcxx/v6/xmethods.py (working copy) @@ -584,6 +584,7 @@ matcher_name_prefix + 'unique_ptr') self._method_dict = { 'get': LibStdCxxXMethod('get', UniquePtrGetWorker), + 'operator->': LibStdCxxXMethod('operator->', UniquePtrGetWorker), 'operator*': LibStdCxxXMethod('operator*', UniquePtrDerefWorker), } self.methods = [self._method_dict[m] for m in self._method_dict] Index: testsuite/libstdc++-xmethods/unique_ptr.cc =================================================================== --- testsuite/libstdc++-xmethods/unique_ptr.cc (revision 222651) +++ testsuite/libstdc++-xmethods/unique_ptr.cc (working copy) @@ -20,13 +20,22 @@ #include <memory> +struct x_struct +{ + int y; +}; + int main () { int *i = new int; *i = 10; + std::unique_ptr<int> p(i); - std::unique_ptr<int> p(i); + x_struct *x = new x_struct; + x->y = 23; + std::unique_ptr<x_struct> q(x); + // { dg-final { note-test *p 10 } } // { dg-final { regexp-test p.get() 0x.* } } @@ -33,6 +42,14 @@ // { dg-final { whatis-test *p int } } // { dg-final { whatis-test p.get() "int \*" } } +// { dg-final { note-test *q {\{y = 23\}} } } +// { dg-final { regexp-test q.get() 0x.* } } +// { dg-final { note-test q->y 23 } } + +// { dg-final { whatis-test *q x_struct } } +// { dg-final { whatis-test q.get() "x_struct \*" } } +// { dg-final { whatis-test q->y int } } + return 0; // Mark SPOT }