# Copyright 2018-2021 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Test for subtype definitions, i.e., types defined in classes, functions,
# etc.

if {[skip_cplus_tests]} { continue }

load_lib "cp-support.exp"

standard_testfile .cc subtypes-2.cc

if {[prepare_for_testing "failed to prepare" $testfile \
	 [list $srcfile $srcfile2] \
	 {debug c++ additional_flags=-std=c++11}]} {
    return -1
}

gdb_test "ptype Outer::Inner::InnerInner" \
    "type = struct Outer::Inner::InnerInner.*"
gdb_test "ptype Outer::Inner" "type = struct Outer::Inner.*"
gdb_test "ptype main::Foo" "type = struct Foo.*"
gdb_test "ptype main::Bar" "type = struct Bar.*"
gdb_test "ptype main::Baz" "type = struct Baz.*"
gdb_test "ptype Outer::Oenum" "type = enum class Outer::Oenum.*"
gdb_test "ptype foobar<int>::Foo" "type = struct Foo.*"
gdb_test "ptype foobar<int>::Bar" "type = struct Bar.*"
gdb_test "ptype foobar<int>::Baz" "type = struct Baz.*"
gdb_test "ptype foobar<char>::Foo" "type = struct Foo.*"
gdb_test "ptype foobar<char>::Bar" "type = struct Bar.*"
gdb_test "ptype foobar<char>::Baz" "type = struct Baz.*"
gdb_breakpoint "Outer::Inner::doit" message
gdb_breakpoint "main::Foo::doit" message
gdb_breakpoint "main::Bar::doit" message
gdb_breakpoint "main::Baz::doit" message
gdb_breakpoint "foobar<int>(int)::Foo::doit" message
gdb_breakpoint "foobar<int>(int)::Bar::doit" message
gdb_breakpoint "foobar<int>(int)::Baz::doit" message
gdb_breakpoint "foobar<char>(int)::Foo::doit" message
gdb_breakpoint "foobar<char>(int)::Bar::doit" message
gdb_breakpoint "foobar<char>(int)::Baz::doit" message
