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

Sami Wagiaalla swagiaal@redhat.com
Wed Jan 27 20:10:00 GMT 2010


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)"
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: remainder-of-tests.patch
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20100127/5e982075/attachment.ksh>


More information about the Gdb-patches mailing list