diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-03-01 19:34:46 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-03-01 19:34:46 +0000 |
commit | 9733fc944203887f70b8b4e42514b46d7679d360 (patch) | |
tree | 97cb11b272a0beda2f82b0f901ecc2ca08b03a25 /gdb/testsuite/gdb.cp | |
parent | 65419985ef80b508daf59c7cd47f7e23c479c202 (diff) | |
download | gdb-9733fc944203887f70b8b4e42514b46d7679d360.zip gdb-9733fc944203887f70b8b4e42514b46d7679d360.tar.gz gdb-9733fc944203887f70b8b4e42514b46d7679d360.tar.bz2 |
gdb/
* gdbtypes.c (lookup_struct_elt_type): Correct noerr for recursive
calls.
gdb/testsuite/
* gdb.cp/inherit.exp (test_print_mi_member_types): New function.
(do_tests): Call it.
Diffstat (limited to 'gdb/testsuite/gdb.cp')
-rw-r--r-- | gdb/testsuite/gdb.cp/inherit.exp | 124 |
1 files changed, 123 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.cp/inherit.exp b/gdb/testsuite/gdb.cp/inherit.exp index 9ae1c1e..e90c0c6 100644 --- a/gdb/testsuite/gdb.cp/inherit.exp +++ b/gdb/testsuite/gdb.cp/inherit.exp @@ -1,5 +1,5 @@ # Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, -# 2004 Free Software Foundation, Inc. +# 2004, 2006 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -373,6 +373,127 @@ proc test_print_mi_members {} { gdb_test "print g_E.E::x" "$vhn = 32" } +# Multiple inheritance, print individual member types. + +proc test_print_mi_member_types {} { + global gdb_prompt + global nl + global vhn + + # Print the types of some members of g_D without qualifying them. + gdb_test "ptype g_D.b" "type = int" + gdb_test "ptype g_D.c" "type = int" + gdb_test "ptype g_D.d" "type = int" + + # Print the types of qualified members; none of these tests pass today. + + # Print all members of g_A. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_A.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_A.A::x" "type = int" + + # Print all members of g_B. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.A::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_B.B::x" "type = int" + + # Print all members of g_C. + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.A::a" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.A::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_C.C::x" "type = int" + + # Print all members of g_D. + # + # g_D.A::a and g_D.A::x are ambiguous member accesses, and gdb + # should detect these. There are no ways to PASS these tests + # because I don't know what the gdb message will be. -- chastain + # 2004-01-27. + + set name "ptype g_D.A::a" + gdb_test_multiple "ptype g_D.A::a" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_D.A::a" + } + } + + set name "ptype g_D.A::x" + gdb_test_multiple "ptype g_D.A::x" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_D.A::x" + } + } + + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.B::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.C::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.D::d" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_D.D::x" "type = int" + + # Print all members of g_E. + # g_E.A::a and g_E.A::x are ambiguous. + + set name "ptype g_E.A::a" + gdb_test_multiple "ptype g_E.A::a" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_E.A::a" + } + } + + set name "ptype g_E.A::x" + gdb_test_multiple "ptype g_E.A::x" $name { + -re "Attempt to take address of non-lval$nl$gdb_prompt $" { + kfail "gdb/2092" "$name" + } + -re "type = int$nl$gdb_prompt $" { + kfail "gdb/68" "ptype g_E.A::x" + } + } + + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.B::b" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.B::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.C::c" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.C::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.D::d" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.D::x" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.E::e" "type = int" + setup_kfail "gdb/2092" "*-*-*" + gdb_test "ptype g_E.E::x" "type = int" +} + # Multiple inheritance, print complete classes. proc test_print_mi_classes { } { @@ -668,6 +789,7 @@ proc do_tests { } { test_print_si_members test_print_si_classes test_print_mi_members + test_print_mi_member_types test_print_mi_classes test_print_anon_union |