| Index: gdb/testsuite/gdb.cp/member-ptr.exp
|
| diff --git a/gdb/testsuite/gdb.cp/member-ptr.exp b/gdb/testsuite/gdb.cp/member-ptr.exp
|
| index f569ca9343a0189968aac6d1e716d32932fbedd2..bba03ee8c665fb127d5b311e9b4c22c2ae920260 100644
|
| --- a/gdb/testsuite/gdb.cp/member-ptr.exp
|
| +++ b/gdb/testsuite/gdb.cp/member-ptr.exp
|
| @@ -1,5 +1,4 @@
|
| -# Copyright 1998-1999, 2003-2004, 2006-2012 Free Software Foundation,
|
| -# Inc.
|
| +# Copyright 1998-2013 Free Software Foundation, Inc.
|
|
|
| # This file is part of the gdb testsuite
|
|
|
| @@ -376,6 +375,33 @@ gdb_test_multiple "print ((int) pmi) == ((char *) &a.j - (char *) & a)" $name {
|
| }
|
| }
|
|
|
| +# Check pointers to data members, which are themselves pointers to
|
| +# functions. These behave like data members, not like pointers to
|
| +# member functions.
|
| +
|
| +gdb_test "ptype diamond_pfunc_ptr" \
|
| + "type = int \\(\\*Diamond::\\*\\)\\(int\\)"
|
| +
|
| +gdb_test "ptype diamond.*diamond_pfunc_ptr" \
|
| + "type = int \\(\\*\\)\\(int\\)"
|
| +
|
| +# This one is invalid; () binds more tightly than .*, so it tries to
|
| +# call the member pointer as a normal pointer-to-function.
|
| +
|
| +gdb_test "print diamond.*diamond_pfunc_ptr (20)" \
|
| + "Invalid data type for function to be called."
|
| +
|
| +# With parentheses, it is valid.
|
| +
|
| +gdb_test "print (diamond.*diamond_pfunc_ptr) (20)" \
|
| + "$vhn = 39"
|
| +
|
| +# Make sure that we do not interpret this as either a member pointer
|
| +# call or a member function call.
|
| +
|
| +gdb_test "print diamond.func_ptr (20)" \
|
| + "$vhn = 39"
|
| +
|
| # ==========================
|
| # pointer to member function
|
| # ==========================
|
| @@ -595,6 +621,7 @@ gdb_test_multiple "print (a.*pmf)(3)" $name {
|
| }
|
|
|
| gdb_test "ptype a.*pmf" "type = int \\(A \\*( const)?, int\\)"
|
| +gdb_test "ptype (a.*pmf)(3)" "type = int"
|
|
|
| # Print out a pointer to data member which requires looking into
|
| # a base class.
|
|
|