# Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2004
# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# tests for namespaces
# Originally written by Satish Pai <pai@apollo.hp.com> 1997-07-23

# This file is part of the gdb testsuite

# Note: The original tests were geared to the HP aCC compiler,
# which has an idiosyncratic way of emitting debug info
# for namespaces.
# Note: As of 2000-06-03, they passed under g++ - djb


if $tracelevel then {
        strace $tracelevel
        }

set prms_id 0
set bug_id 0

if { [skip_cplus_tests] } { continue }

set testfile "namespace"
set srcfile ${testfile}.cc
set objfile ${objdir}/${subdir}/${testfile}.o
set srcfile1 ${testfile}1.cc
set objfile1 ${objdir}/${subdir}/${testfile}1.o
set binfile ${objdir}/${subdir}/${testfile}

if [get_compiler_info ${binfile} c++] {
    return -1;
}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {debug c++}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if  { [gdb_compile "${objfile} ${objfile1}" "${binfile}" executable {debug c++}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}


#
# set it up at a breakpoint so we can play with the variable values
#
if ![runto_main] then {
    perror "couldn't run to breakpoint"
    continue
}

if ![runto 'marker1'] then {
    perror "couldn't run to marker1"
    continue
}

gdb_test "up" ".*main.*" "up from marker1"

# Access a data item inside a namespace using colons and
# single quotes. :-(

# NOTE: carlton/2003-09-24: the quotes are becoming less necessary (or
# even desirable.)  For tests where it should still work with quotes,
# I'm including versions both with and without quotes; for tests that
# shouldn't work with quotes, I'm only including one version.

send_gdb "print 'AAA::c'\n"
gdb_expect {
   -re "\\$\[0-9\]* = 0 '\\\\(0|000)'\r\n$gdb_prompt $" { pass "print 'AAA::c'" }
   -re ".*$gdb_prompt $" { fail "print 'AAA::c'" }
   timeout { fail "(timeout) print 'AAA::c'" }
}

send_gdb "print AAA::c\n"
gdb_expect {
   -re "\\$\[0-9\]* = 0 '\\\\(0|000)'\r\n$gdb_prompt $" { pass "print AAA::c" }
   -re ".*$gdb_prompt $" { fail "print AAA::c" }
   timeout { fail "(timeout) print AAA::c" }
}

# An object declared using "using".

send_gdb "print ina\n"
gdb_expect {
   -re "\\$\[0-9\]+ = {xx = 33}.*$gdb_prompt $" {
      pass "print ina"
   }
   -re ".*$gdb_prompt $" { fail "print ina" }
   timeout { fail "(timeout) print ina" }
}

send_gdb "ptype ina\n"
gdb_expect {
   -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" {
       pass "ptype ina"
   }
   -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*int fum\\(int\\);\r\n.*\}\r\n$gdb_prompt $" {
       pass "ptype ina"
   }
   -re ".*$gdb_prompt $" { fail "ptype ina" }
   timeout { fail "(timeout) ptype ina" }
}

# Check all functions are known to GDB

setup_xfail hppa*-*-*11* CLLbs14869
send_gdb "info func xyzq\n"
gdb_expect {
   -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\n$gdb_prompt $" {
       pass "info func xyzq"
   }    
   -re "All functions.*File.*namespace.cc:\r\nint AAA::A_xyzq\\(int\\);\r\nchar AAA::xyzq\\(char\\);\r\nint BBB::B_xyzq\\(int\\);\r\nchar BBB::CCC::xyzq\\(char\\);\r\nchar BBB::Class::xyzq\\(char\\);\r\nchar BBB::xyzq\\(char\\);\r\n$gdb_prompt $" {
       pass "info func xyzq"
   }    
   -re ".*$gdb_prompt $" { fail "info func xyzq" }
   timeout { fail "(timeout) info func xyzq" }
}

# Call a function in a namespace

send_gdb "print 'AAA::xyzq'('x')\n"
gdb_expect {
   -re "\\$\[0-9\]* = 97 'a'\r\n$gdb_prompt $" {
       pass "print 'AAA::xyzq'('x')"
   }
   -re ".*$gdb_prompt $" { fail "print 'AAA::xyzq'('x')" }
   timeout { fail "(timeout) print 'AAA::xyzq'('x')" }
}
       
send_gdb "print AAA::xyzq('x')\n"
gdb_expect {
   -re "\\$\[0-9\]* = 97 'a'\r\n$gdb_prompt $" {
       pass "print AAA::xyzq('x')"
   }
   -re ".*$gdb_prompt $" { fail "print AAA::xyzq('x')" }
   timeout { fail "(timeout) print AAA::xyzq('x')" }
}
       
# Break on a function in a namespace

send_gdb "break AAA::xyzq\n"
gdb_expect {
    -re "Breakpoint.*at $hex: file.*namespace.cc, line 42\\.\r\n$gdb_prompt $" {
         pass "break AAA::xyzq"
    }    
   -re ".*$gdb_prompt $" { fail "break AAA::xyzq" }
   timeout { fail "(timeout) break AAA::xyzq" }
}

# Call a function in a nested namespace

send_gdb "print 'BBB::CCC::xyzq'('x')\n"
gdb_expect {
   -re "\\$\[0-9\]* = 122 'z'\r\n$gdb_prompt $" {
       pass "print 'BBB::CCC::xyzq'('x')"
   }
   -re ".*$gdb_prompt $" { fail "print 'BBB::CCC::xyzq'('x')" }
   timeout { fail "(timeout) print 'BBB::CCC::xyzq'('x')" }
}
       
send_gdb "print BBB::CCC::xyzq('x')\n"
gdb_expect {
   -re "\\$\[0-9\]* = 122 'z'\r\n$gdb_prompt $" {
       pass "print BBB::CCC::xyzq('x')"
   }
   -re ".*$gdb_prompt $" { fail "print BBB::CCC::xyzq('x')" }
   timeout { fail "(timeout) print BBB::CCC::xyzq('x')" }
}
       
# Break on a function in a nested namespace

send_gdb "break BBB::CCC::xyzq\n"
gdb_expect {
    -re "Breakpoint.*at $hex: file.*namespace.cc, line 58\\.\r\n$gdb_prompt $" {
         pass "break BBB::CCC::xyzq"
    }    
   -re ".*$gdb_prompt $" { fail "break BBB::CCC::xyzq" }
   timeout { fail "(timeout) break BBB::CCC::xyzq" }
}

# Print address of a function in a class in a namespace

send_gdb "print 'BBB::Class::xyzq'\n"
gdb_expect {
   -re "\\$\[0-9\]* = \{char \\(class ('|)(BBB::|)Class('|) \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>\r\n$gdb_prompt $" {
       pass "print 'BBB::Class::xyzq'"
   }
   -re ".*$gdb_prompt $" { fail "print 'BBB::Class::xyzq'" }
   timeout { fail "(timeout) print 'BBB::Class::xyzq'" }
}

send_gdb "print BBB::Class::xyzq\n"
gdb_expect {
   -re "\\$\[0-9\]* = \{char \\(class ('|)(BBB::|)Class('|) \\*( const|), (char|int)\\)\} $hex <BBB::Class::xyzq\\(char\\)>\r\n$gdb_prompt $" {
       pass "print BBB::Class::xyzq"
   }
   -re ".*$gdb_prompt $" { fail "print BBB::Class::xyzq" }
   timeout { fail "(timeout) print BBB::Class::xyzq" }
}

# Break on a function in a class in a namespace

send_gdb "break BBB::Class::xyzq\n"
gdb_expect {
    -re "Breakpoint.*at $hex: file.*namespace.cc, line 63\\.\r\n$gdb_prompt $" {
         pass "break BBB::Class::xyzq"
    }    
   -re ".*$gdb_prompt $" { fail "break BBB::Class::xyzq" }
   timeout { fail "(timeout) break BBB::Class::xyzq" }
}

# Test to see if the appropriate namespaces are in scope when trying
# to print out stuff from within a function defined within a
# namespace.

if ![runto "C::D::marker2"] then {
    perror "couldn't run to marker2"
    continue
}

gdb_test "print c" "\\$\[0-9\].* = 1"
gdb_test "print cc" "No symbol \"cc\" in current context."
gdb_test "print 'C::cc'" "\\$\[0-9\].* = 2"
gdb_test "print C::cc" "\\$\[0-9\].* = 2"
gdb_test "print cd" "\\$\[0-9\].* = 3"
gdb_test "print C::D::cd" "No type \"D\" within class or namespace \"C::C\"."
gdb_test "print 'E::cde'" "\\$\[0-9\].* = 5"
gdb_test "print E::cde" "\\$\[0-9\].* = 5"
gdb_test "print shadow" "\\$\[0-9\].* = 13"
gdb_test "print E::ce" "No symbol \"ce\" in namespace \"C::D::E\"."
gdb_test "ptype C" "type = namespace C::C"
gdb_test "ptype E" "type = namespace C::D::E"

gdb_test "ptype CClass" "type = (class C::CClass \{\r\n  public:|struct C::CClass \{)\r\n    int x;\r\n\}"
gdb_test "ptype CClass::NestedClass" "type = (class C::CClass::NestedClass \{\r\n  public:|struct C::CClass::NestedClass \{)\r\n    int y;\r\n\}"
gdb_test "ptype NestedClass" "No symbol \"NestedClass\" in current context."
setup_kfail "gdb/1448" "*-*-*"
gdb_test "ptype ::C::CClass" "type = class C::CClass \{\r\n  public:\r\n    int x;\r\n\}"
setup_kfail "gdb/1448" "*-*-*"
gdb_test "ptype ::C::CClass::NestedClass" "type = class C::CClass::NestedClass \{\r\n  public:\r\n    int y;\r\n\}"
setup_kfail "gdb/1448" "*-*-*"
gdb_test "ptype ::C::NestedClass" "No symbol \"NestedClass\" in namespace \"C\"."
gdb_test "ptype C::CClass" "No symbol \"CClass\" in namespace \"C::C\"."
gdb_test "ptype C::CClass::NestedClass" "No type \"CClass\" within class or namespace \"C::C\"."
gdb_test "ptype C::NestedClass" "No symbol \"NestedClass\" in namespace \"C::C\"."

# Tests involving multiple files

gdb_test "print cOtherFile" "\\$\[0-9\].* = 316"
gdb_test "ptype OtherFileClass" "type = (class C::OtherFileClass \{\r\n  public:|struct C::OtherFileClass \{)\r\n    int z;\r\n\}"
setup_kfail "gdb/1448" "*-*-*"
gdb_test "ptype ::C::OtherFileClass" "type = class C::OtherFileClass \{\r\n  public:\r\n    int z;\r\n\}"
gdb_test "ptype C::OtherFileClass" "No symbol \"OtherFileClass\" in namespace \"C::C\"."

# Some anonymous namespace tests.

gdb_test "print cX" "\\$\[0-9\].* = 6"
gdb_test "print 'F::cXf'" "\\$\[0-9\].* = 7"
gdb_test "print F::cXf" "\\$\[0-9\].* = 7"
gdb_test "print F::cXfX" "\\$\[0-9\].* = 8"
gdb_test "print X" "\\$\[0-9\].* = 9"
gdb_test "print 'G::Xg'" "\\$\[0-9\].* = 10"
gdb_test "print G::Xg" "\\$\[0-9\].* = 10"
gdb_test "print G::XgX" "\\$\[0-9\].* = 11"
gdb_test "print cXOtherFile" "No symbol \"cXOtherFile\" in current context."
gdb_test "print XOtherFile" "No symbol \"XOtherFile\" in current context."
