2010-01-28 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.cp/nsusing.exp: Added more tests. * gdb.cp/nsrecurs.exp: Ditto. * gdb.cp/nsusing.cc: Added test functions. * gdb.cp/nsrecurs.cc: Ditto.
This commit is contained in:
parent
1c4809636b
commit
df83a9bf8b
@ -1,3 +1,10 @@
|
||||
2010-01-28 Sami Wagiaalla <swagiaal@redhat.com>
|
||||
|
||||
* gdb.cp/nsusing.exp: Added more tests.
|
||||
* gdb.cp/nsrecurs.exp: Ditto.
|
||||
* gdb.cp/nsusing.cc: Added test functions.
|
||||
* gdb.cp/nsrecurs.cc: Ditto.
|
||||
|
||||
2010-01-27 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.base/break-interp.exp: Use [file tail $filename] to omit any
|
||||
|
@ -1,30 +1,57 @@
|
||||
namespace A{
|
||||
namespace A
|
||||
{
|
||||
int ax = 9;
|
||||
}
|
||||
|
||||
namespace B{
|
||||
namespace B
|
||||
{
|
||||
using namespace A;
|
||||
}
|
||||
|
||||
namespace C{
|
||||
namespace C
|
||||
{
|
||||
using namespace B;
|
||||
}
|
||||
|
||||
//---------------
|
||||
namespace D{
|
||||
using namespace D;
|
||||
int dx = 99;
|
||||
}
|
||||
using namespace C;
|
||||
|
||||
//---------------
|
||||
namespace{
|
||||
namespace{
|
||||
namespace D
|
||||
{
|
||||
using namespace D;
|
||||
int dx = 99;
|
||||
}
|
||||
using namespace D;
|
||||
|
||||
//---------------
|
||||
namespace
|
||||
{
|
||||
namespace
|
||||
{
|
||||
int xx = 999;
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
using namespace D;
|
||||
return ax + dx + xx;
|
||||
//---------------
|
||||
namespace E
|
||||
{
|
||||
int ex = 9999;
|
||||
}
|
||||
|
||||
namespace F
|
||||
{
|
||||
namespace FE = E;
|
||||
}
|
||||
|
||||
namespace G
|
||||
{
|
||||
namespace GF = F;
|
||||
}
|
||||
|
||||
//----------------
|
||||
int main ()
|
||||
{
|
||||
using namespace D;
|
||||
namespace GX = G;
|
||||
return ax + dx + xx + G::GF::FE::ex;
|
||||
}
|
||||
|
@ -13,8 +13,6 @@
|
||||
# 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 recursive namespace lookup
|
||||
|
||||
if $tracelevel then {
|
||||
strace $tracelevel
|
||||
}
|
||||
@ -25,7 +23,8 @@ set bug_id 0
|
||||
set testfile nsrecurs
|
||||
set srcfile ${testfile}.cc
|
||||
set binfile ${objdir}/${subdir}/${testfile}
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" \
|
||||
"${binfile}" executable {debug c++}] != "" } {
|
||||
untested "Couldn't compile test program"
|
||||
return -1
|
||||
}
|
||||
@ -65,3 +64,13 @@ gdb_test "print dx" "= 99"
|
||||
# anonymous namespace imports.
|
||||
|
||||
gdb_test "print xx" "= 999"
|
||||
|
||||
############################################
|
||||
# Test printing using recursive namespace
|
||||
# aliases.
|
||||
|
||||
setup_kfail "gdb/10541" "*-*-*"
|
||||
gdb_test "ptype G::GF" "= namespace F"
|
||||
|
||||
setup_kfail "gdb/10541" "*-*-*"
|
||||
gdb_test "print G::GF::FE::ex" "= 9999"
|
||||
|
@ -1,34 +1,77 @@
|
||||
namespace O
|
||||
namespace M
|
||||
{
|
||||
int ox = 4;
|
||||
int x = 911;
|
||||
}
|
||||
|
||||
namespace PQ
|
||||
namespace N
|
||||
{
|
||||
int marker6 ()
|
||||
int x = 912;
|
||||
}
|
||||
|
||||
int marker10 ()
|
||||
{
|
||||
using namespace M;
|
||||
int y = x + 1; // marker10 stop
|
||||
using namespace N;
|
||||
return y;
|
||||
}
|
||||
|
||||
namespace J
|
||||
{
|
||||
int jx = 44;
|
||||
}
|
||||
|
||||
namespace K
|
||||
{
|
||||
int marker9 ()
|
||||
{
|
||||
return 0;
|
||||
//x;
|
||||
return marker10 ();
|
||||
}
|
||||
}
|
||||
|
||||
namespace P
|
||||
namespace L
|
||||
{
|
||||
using namespace O;
|
||||
using namespace J;
|
||||
int marker8 ()
|
||||
{
|
||||
jx;
|
||||
return K::marker9 ();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------
|
||||
namespace C
|
||||
namespace G
|
||||
{
|
||||
int cc = 3;
|
||||
namespace H
|
||||
{
|
||||
int ghx = 6;
|
||||
}
|
||||
}
|
||||
|
||||
using namespace C;
|
||||
int marker5 ()
|
||||
namespace I
|
||||
{
|
||||
cc;
|
||||
return PQ::marker6 ();
|
||||
int marker7 ()
|
||||
{
|
||||
using namespace G::H;
|
||||
ghx;
|
||||
return L::marker8 ();
|
||||
}
|
||||
}
|
||||
|
||||
namespace E
|
||||
{
|
||||
namespace F
|
||||
{
|
||||
int efx = 5;
|
||||
}
|
||||
}
|
||||
|
||||
using namespace E::F;
|
||||
int marker6 ()
|
||||
{
|
||||
efx;
|
||||
return I::marker7 ();
|
||||
}
|
||||
|
||||
namespace A
|
||||
{
|
||||
@ -36,42 +79,61 @@ namespace A
|
||||
int x = 2;
|
||||
}
|
||||
|
||||
int marker4(){
|
||||
using A::x;
|
||||
return marker5 ();
|
||||
namespace C
|
||||
{
|
||||
int cc = 3;
|
||||
}
|
||||
|
||||
int marker3(){
|
||||
return marker4();
|
||||
namespace D
|
||||
{
|
||||
int dx = 4;
|
||||
}
|
||||
|
||||
int marker2()
|
||||
using namespace C;
|
||||
int marker5 ()
|
||||
{
|
||||
cc;
|
||||
return marker6 ();
|
||||
}
|
||||
|
||||
int marker4 ()
|
||||
{
|
||||
using D::dx;
|
||||
return marker5 ();
|
||||
}
|
||||
|
||||
int marker3 ()
|
||||
{
|
||||
return marker4 ();
|
||||
}
|
||||
|
||||
int marker2 ()
|
||||
{
|
||||
namespace B = A;
|
||||
B::_a;
|
||||
return marker3();
|
||||
return marker3 ();
|
||||
}
|
||||
|
||||
int marker1()
|
||||
int marker1 ()
|
||||
{
|
||||
int total = 0;
|
||||
{
|
||||
int b = 1;
|
||||
{
|
||||
using namespace A;
|
||||
int c = 2;
|
||||
{
|
||||
int d = 3;
|
||||
total = _a + b + c + d + marker2(); // marker1 stop
|
||||
}
|
||||
int b = 1;
|
||||
{
|
||||
using namespace A;
|
||||
int c = 2;
|
||||
{
|
||||
int d = 3;
|
||||
total = _a + b + c + d + marker2 (); // marker1 stop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return marker2() + total;
|
||||
return marker2 () + total;
|
||||
}
|
||||
|
||||
int main()
|
||||
int main ()
|
||||
{
|
||||
using namespace A;
|
||||
_a;
|
||||
return marker1();
|
||||
return marker1 ();
|
||||
}
|
||||
|
@ -23,7 +23,8 @@ set bug_id 0
|
||||
set testfile nsusing
|
||||
set srcfile ${testfile}.cc
|
||||
set binfile ${objdir}/${subdir}/${testfile}
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
|
||||
{debug c++}] != "" } {
|
||||
untested "Couldn't compile test program"
|
||||
return -1
|
||||
}
|
||||
@ -51,32 +52,94 @@ if ![runto_main] then {
|
||||
|
||||
gdb_test "print _a" "= 1"
|
||||
|
||||
# Test that names are not printed when they
|
||||
# are not imported
|
||||
|
||||
gdb_breakpoint marker3
|
||||
gdb_continue_to_breakpoint "marker3"
|
||||
|
||||
#send_gdb "break marker3\n"
|
||||
#send_gdb "continue\n"
|
||||
|
||||
gdb_test "print _a" "No symbol \"_a\" in current context." \
|
||||
"Print _a without import"
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile}
|
||||
|
||||
|
||||
############################################
|
||||
# test printing of namespace imported into
|
||||
# test printing of namespace imported into
|
||||
# a scope containing the pc.
|
||||
|
||||
if ![runto_main] then {
|
||||
perror "couldn't run to breakpoint main"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "marker1 stop"]
|
||||
gdb_continue_to_breakpoint "marker1 stop"
|
||||
|
||||
gdb_test "print _a" "= 1" "print _a in a nested scope"
|
||||
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile}
|
||||
|
||||
############################################
|
||||
# test printing of namespace imported into
|
||||
# file scope.
|
||||
|
||||
|
||||
if ![runto marker5] then {
|
||||
perror "couldn't run to breakpoint marker5"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print cc" "= 3"
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile}
|
||||
|
||||
|
||||
############################################
|
||||
# Test printing of namespace aliases
|
||||
|
||||
setup_kfail "gdb/7935" "*-*-*"
|
||||
if ![runto marker2] then {
|
||||
perror "couldn't run to breakpoint marker2"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print B::a" "= 1"
|
||||
setup_kfail "gdb/7935" "*-*-*"
|
||||
gdb_test "print B::_a" "= 1"
|
||||
|
||||
setup_kfail "gdb/7935" "*-*-*"
|
||||
gdb_test "print _a" "No symbol \"_a\" in current context." \
|
||||
"print _a in namespace alias scope"
|
||||
|
||||
setup_kfail "gdb/7935" "*-*-*"
|
||||
gdb_test "print x" "No symbol \"x\" in current context." \
|
||||
"print x in namespace alias scope"
|
||||
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_load ${binfile}
|
||||
|
||||
|
||||
############################################
|
||||
# Test that names are not printed when they
|
||||
# Test that names are not printed when they
|
||||
# are not imported
|
||||
|
||||
gdb_breakpoint "marker3"
|
||||
gdb_continue_to_breakpoint "marker3"
|
||||
if {![runto marker3]} {
|
||||
perror "couldn't run to breakpoint marker3"
|
||||
}
|
||||
|
||||
# gcc-4-3 puts import statements for aliases in
|
||||
# the global scope instead of the corresponding
|
||||
@ -84,37 +147,67 @@ gdb_continue_to_breakpoint "marker3"
|
||||
# this test off. This is fixed in gcc-4-4.
|
||||
if [test_compiler_info gcc-4-3-*] then { setup_xfail *-*-* }
|
||||
|
||||
gdb_test "print _a" "No symbol \"_a\" in current context." "Print _a without import"
|
||||
gdb_test "print _a" "No symbol \"_a\" in current context." \
|
||||
"Print _a without import"
|
||||
|
||||
############################################
|
||||
# Test printing of individually imported elements
|
||||
|
||||
setup_kfail "gdb/7936" "*-*-*"
|
||||
if ![runto marker4] then {
|
||||
perror "couldn't run to breakpoint marker4"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print x" "= 2"
|
||||
setup_kfail "gdb/7936" "*-*-*"
|
||||
gdb_test "print dx" "= 4"
|
||||
|
||||
############################################
|
||||
# test printing of namespace imported into
|
||||
# file scope.
|
||||
# Test printing of namespace aliases
|
||||
|
||||
if ![runto marker5] then {
|
||||
perror "couldn't run to marker5"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print cc" "= 3"
|
||||
gdb_test "print efx" "= 5"
|
||||
|
||||
############################################
|
||||
# test printing of namespace imported into
|
||||
# file scope.
|
||||
# Test printing of variables imported from
|
||||
# nested namespaces
|
||||
|
||||
if ![runto PQ::marker6] then {
|
||||
perror "couldn't run to PQ::marker6"
|
||||
if ![runto I::marker7] then {
|
||||
perror "couldn't run to breakpoint I::marker7"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print ox" "No symbol \"ox\" in current context."
|
||||
gdb_test "print ghx" "= 6"
|
||||
|
||||
############################################
|
||||
# Test that variables are not printed in a namespace
|
||||
# that is sibling to the namespace containing an import
|
||||
|
||||
if ![runto L::marker8] then {
|
||||
perror "couldn't run to breakpoint L::marker8"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_test "print jx" "= 44"
|
||||
|
||||
gdb_breakpoint "K::marker9"
|
||||
gdb_continue_to_breakpoint "K::marker9"
|
||||
|
||||
gdb_test "print jx" "No symbol \"jx\" in current context."
|
||||
|
||||
############################################
|
||||
# Test that variables are only printed after the line
|
||||
# containing the import
|
||||
|
||||
if ![runto_main] then {
|
||||
perror "couldn't run to breakpoint main"
|
||||
continue
|
||||
}
|
||||
|
||||
gdb_breakpoint [gdb_get_line_number "marker10 stop"]
|
||||
gdb_continue_to_breakpoint "marker10 stop"
|
||||
|
||||
# Assert that M::x is printed and not N::x
|
||||
gdb_test "print x" "= 911" "print x (from M::x)"
|
||||
|
Loading…
Reference in New Issue
Block a user