aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2015-05-26 23:06:55 +0000
committerDoug Evans <devans@gcc.gnu.org>2015-05-26 23:06:55 +0000
commit419587a0bb9c22c0088e6fca5449af957db2c5bb (patch)
tree56f1102ebf225578799af23855f6725d2cdffad8
parentafa5920a97b539b111a2f1593717ee7ef14f7bdb (diff)
downloadgcc-419587a0bb9c22c0088e6fca5449af957db2c5bb.zip
gcc-419587a0bb9c22c0088e6fca5449af957db2c5bb.tar.gz
gcc-419587a0bb9c22c0088e6fca5449af957db2c5bb.tar.bz2
xmethods.py (UniquePtrMethodsMatcher): Add operator-> support.
* python/libstdcxx/v6/xmethods.py (UniquePtrMethodsMatcher): Add operator-> support. * testsuite/libstdc++-xmethods/unique_ptr.cc: Add tests for operator->. From-SVN: r223723
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/python/libstdcxx/v6/xmethods.py1
-rw-r--r--libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc19
3 files changed, 26 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index af08a73..fa3963d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2015-05-26 Doug Evans <dje@google.com>
+
+ * python/libstdcxx/v6/xmethods.py (UniquePtrMethodsMatcher): Add
+ operator-> support.
+ * testsuite/libstdc++-xmethods/unique_ptr.cc: Add tests for
+ operator->.
+
2015-05-26 Jonathan Wakely <jwakely@redhat.com>
* include/bits/locale_conv.h: Fix copyright years.
diff --git a/libstdc++-v3/python/libstdcxx/v6/xmethods.py b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
index 6db0e16..c85dd67 100644
--- a/libstdc++-v3/python/libstdcxx/v6/xmethods.py
+++ b/libstdc++-v3/python/libstdcxx/v6/xmethods.py
@@ -584,6 +584,7 @@ class UniquePtrMethodsMatcher(gdb.xmethod.XMethodMatcher):
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]
diff --git a/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc b/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
index 5d59b55..c449f52 100644
--- a/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
+++ b/libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
@@ -20,19 +20,36 @@
#include <memory>
+struct x_struct
+{
+ int y;
+};
+
int
main ()
{
int *i = new int;
*i = 10;
-
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.* } }
// { 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
}