This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Test cases nsusing.exp and nsrecurs.exp


This patch contains the remainder of the nsusing.exp and nsrecurs.exp
test cases. Committing entire test cases makes it easier to manage
patches and avoids creation of unneeded conflicts. I have patches for
all the kfails.


2010-01-27 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.
	

diff --git a/gdb/testsuite/gdb.cp/nsrecurs.cc b/gdb/testsuite/gdb.cp/nsrecurs.cc
index 84605a6..2edc35f 100644
--- a/gdb/testsuite/gdb.cp/nsrecurs.cc
+++ b/gdb/testsuite/gdb.cp/nsrecurs.cc
@@ -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;
}
+using namespace C;
+
//---------------
-namespace D{
+namespace D
+{
using namespace D;
int dx = 99;
}
-using namespace C;
+using namespace D;
//---------------
-namespace{
- namespace{
+namespace
+{
+ namespace
+ {
int xx = 999;
}
}
-int main(){
+//---------------
+namespace E
+{
+ int ex = 9999;
+}
+
+namespace F
+{
+ namespace FE = E;
+}
+
+namespace G
+{
+ namespace GF = F;
+}
+
+//----------------
+int main ()
+{
using namespace D;
- return ax + dx + xx;
+ namespace GX = G;
+ return ax + dx + xx + G::GF::FE::ex;
}
diff --git a/gdb/testsuite/gdb.cp/nsrecurs.exp b/gdb/testsuite/gdb.cp/nsrecurs.exp
index 9939a9f..4784501 100644
--- a/gdb/testsuite/gdb.cp/nsrecurs.exp
+++ b/gdb/testsuite/gdb.cp/nsrecurs.exp
@@ -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
}
@@ -65,3 +63,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"
diff --git a/gdb/testsuite/gdb.cp/nsusing.cc b/gdb/testsuite/gdb.cp/nsusing.cc
index b1f0ce4..72ff941 100644
--- a/gdb/testsuite/gdb.cp/nsusing.cc
+++ b/gdb/testsuite/gdb.cp/nsusing.cc
@@ -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;
+}
+
+namespace D
+{
+ int dx = 4;
+}
+
+using namespace C;
+int marker5 ()
+{
+ cc;
+ return marker6 ();
}
-int marker3(){
- return marker4();
+int marker4 ()
+{
+ using D::dx;
+ return marker5 ();
}
-int marker2()
+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 ();
}
diff --git a/gdb/testsuite/gdb.cp/nsusing.exp b/gdb/testsuite/gdb.cp/nsusing.exp
index ef0237d..5d68071 100644
--- a/gdb/testsuite/gdb.cp/nsusing.exp
+++ b/gdb/testsuite/gdb.cp/nsusing.exp
@@ -51,32 +51,91 @@ 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
@@ -89,32 +148,61 @@ gdb_test "print _a" "No symbol \"_a\" in current context." "Print _a without imp
############################################
# 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 I::marker7] then {
+ perror "couldn't run to breakpoint I::marker7"
+ continue
+}
+
+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."
-if ![runto PQ::marker6] then {
- perror "couldn't run to PQ::marker6"
+############################################
+# 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_test "print ox" "No symbol \"ox\" in current context."
+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)"

Attachment: remainder-of-tests.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]