* gdb.cp/casts.cc: Add class reference variables.
authorAleksandar Ristovski <aristovski@qnx.com>
Tue, 1 Apr 2008 16:16:43 +0000 (16:16 +0000)
committerAleksandar Ristovski <aristovski@qnx.com>
Tue, 1 Apr 2008 16:16:43 +0000 (16:16 +0000)
* gdb.cp/casts.exp: New test cases for up/down casting references.

gdb/testsuite/gdb.cp/casts.cc
gdb/testsuite/gdb.cp/casts.exp

index 831add94418833aae1dced68df7333e7c935fccb..6ecd340c21e765bc46a2713173b394337f9f3c06 100644 (file)
@@ -15,6 +15,8 @@ main (int argc, char **argv)
 {
   A *a = new B(42, 1729);
   B *b = (B *) a;
+  A &ar = *b;
+  B &br = (B&)ar;
 
   return 0;  /* breakpoint spot: casts.exp: 1 */
 }
index 9d6c472a7e20b1d79f8f8cd47c67e3a74db722b8..c8b7332f9ad6aa829344f5b8e20775f02987080d 100644 (file)
@@ -80,3 +80,20 @@ gdb_test "print * (B *) a" ".* = {<A> = {a = 42}, b = 1729}" \
 # the dereference.
 gdb_test "print * b" ".* = {<A> = {a = 42}, b = 1729}" \
     "let compiler cast base class pointer to derived class pointer"
+
+# Check upcasting (it is trivial but still). 
+gdb_test "print * (A *) b" ".* = {a = 42}" \
+    "cast derived class pointer to base class pointer"
+
+# Casting References.
+# Check upcasting. 
+gdb_test "print (A &) br" ".* = .A &.* {a = 42}" \
+    "cast derived class reference to base class reference"
+
+# Check downcasting.
+gdb_test "print (B &) ar" ".* = .B.* {<A> = {a = 42}, b = 1729}" \
+    "cast base class reference to derived class reference"
+
+# Check compiler casting
+gdb_test "print br" ".* = .B.* {<A> = {a = 42}, b = 1729}" \
+    "let compiler cast base class reference to derived class reference"