for (i = 0; i < TYPE_N_BASECLASSES (parent_type); ++i)
{
struct type *type = check_typedef (TYPE_BASECLASS (parent_type, i));
- const char *base_name = TYPE_BASECLASS_NAME (parent_type, i);
+ const char *tdef_name = TYPE_BASECLASS_NAME (parent_type, i);
+ const char *base_name = type->name ();
if (base_name == NULL)
continue;
- if (streq (base_name, name))
+ if (streq (tdef_name, name) || streq (base_name, name))
return type;
type = cp_find_type_baseclass_by_name (type, name);
return -1
}
+set gcc_used [test_compiler_info gcc-*-*]
+
# First test expressions when there is no context.
with_test_prefix "before run" {
gdb_test "print i" "No symbol \"i\" in current context."
gdb_test "print D::i" "= 4"
gdb_test "print D::B<int>::i" "= 2"
gdb_test "print B<int>::i" "= 2"
- gdb_test "print D::Bint::i" \
- "No type \"Bint\" within class or namespace \"D\"."
+
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::i" "= 2"
+
gdb_test "print Bint::i" "= 2"
gdb_test "print D::C::i" "= 3"
gdb_test "print C::i" "= 3"
gdb_test "print D::B<int>::A<int>::i" "= 1"
gdb_test "print B<int>::A<int>::i" "= 1"
- gdb_test "print D::Bint::A<int>::i" \
- "No type \"Bint\" within class or namespace \"D\"."
+
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::A<int>::i" "= 1"
+
gdb_test "print Bint::A<int>::i" "= 1"
gdb_test "print A<int>::i" "= 1"
gdb_test "print D::C::A<int>::i" "= 1"
with_test_prefix "at D::f (invalid expressions)" {
gdb_test "print D::B<int>::c" "There is no field named c"
gdb_test "print D::B<int>::A<int>::c" "There is no field named c"
- gdb_test "print D::Bint::c" \
- "No type \"Bint\" within class or namespace \"D\"."
- gdb_test "print D::Bint::A<int>::c" \
- "No type \"Bint\" within class or namespace \"D\"."
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::c" "There is no field named c"
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::A<int>::c" "There is no field named c"
+
gdb_test "print D::C::A<int>::c" "There is no field named c"
gdb_test "print B<int>::c" "There is no field named c"
gdb_test "print B<int>::A<int>::c" "There is no field named c"
gdb_test "print C::A<int>::c" "There is no field named c"
gdb_test "print D::B<int>::x" "There is no field named x"
gdb_test "print D::B<int>::A<int>::x" "There is no field named x"
- gdb_test "print D::Bint::x" \
- "No type \"Bint\" within class or namespace \"D\"."
- gdb_test "print D::Bint::A<int>::x" \
- "No type \"Bint\" within class or namespace \"D\"."
+
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::x" "There is no field named x"
+ if {$gcc_used} {
+ setup_xfail *-*-* gcc/60833
+ }
+ gdb_test "print D::Bint::A<int>::x" "There is no field named x"
+
gdb_test "print B<int>::x" "There is no field named x"
gdb_test "print B<int>::A<int>::x" "There is no field named x"
gdb_test "print Bint::x" "There is no field named x"