aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2011-10-14 20:22:50 +0000
committerKeith Seitz <keiths@redhat.com>2011-10-14 20:22:50 +0000
commit6501c2fce12bc44b5759a33c2c7259cfdb4169e1 (patch)
tree98b44c2b3f19b5ed2e2b24a92883083bd6c53e4b
parentda096638ca5fcd2fdb2ff8aff9e545c9b0cee478 (diff)
downloadgdb-6501c2fce12bc44b5759a33c2c7259cfdb4169e1.zip
gdb-6501c2fce12bc44b5759a33c2c7259cfdb4169e1.tar.gz
gdb-6501c2fce12bc44b5759a33c2c7259cfdb4169e1.tar.bz2
PR c++/13225
* gdb.cp/converts.cc (foo3_1): New function. (foo3_2): New functions. * gdb.cp/converts.exp: Add tests for int to pointer conversion and null pointer conversions of integer constant zero. Add test to check if all arguments are checked for incompatible conversion BADNESS.
-rw-r--r--gdb/testsuite/ChangeLog10
-rw-r--r--gdb/testsuite/gdb.cp/converts.cc9
-rw-r--r--gdb/testsuite/gdb.cp/converts.exp27
3 files changed, 46 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 2786a53..1de5d3c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2011-10-14 Keith Seitz <keiths@redhat.com>
+
+ PR c++/13225
+ * gdb.cp/converts.cc (foo3_1): New function.
+ (foo3_2): New functions.
+ * gdb.cp/converts.exp: Add tests for int to pointer conversion
+ and null pointer conversions of integer constant zero.
+ Add test to check if all arguments are checked for incompatible
+ conversion BADNESS.
+
2011-10-14 Tom Tromey <tromey@redhat.com>
* gdb.threads/attachstop-mt.exp: Add $srcfile to the linespecs.
diff --git a/gdb/testsuite/gdb.cp/converts.cc b/gdb/testsuite/gdb.cp/converts.cc
index 34b6927..26a45f5 100644
--- a/gdb/testsuite/gdb.cp/converts.cc
+++ b/gdb/testsuite/gdb.cp/converts.cc
@@ -23,6 +23,10 @@ int foo2_2 (char[][1]) {return 22;}
int foo2_3 (char *[]) {return 23;}
int foo2_4 (int *[]) {return 24;}
+int foo3_1 (int a, const char **b) { return 31; }
+int foo3_2 (int a, int b) { return 32; }
+int foo3_2 (int a, const char **b) { return 320; }
+
int main()
{
@@ -53,5 +57,10 @@ int main()
foo2_2 (ba); // ..array of arrays
foo2_3 (b); // ..array of pointers
foo2_4 ((int**)b); // ..array of wrong pointers
+
+ foo3_1 (0, 0);
+ foo3_2 (0, static_cast<char const**> (0));
+ foo3_2 (0, 0);
+
return 0; // end of main
}
diff --git a/gdb/testsuite/gdb.cp/converts.exp b/gdb/testsuite/gdb.cp/converts.exp
index 3f3b3c8..b6a2ad3 100644
--- a/gdb/testsuite/gdb.cp/converts.exp
+++ b/gdb/testsuite/gdb.cp/converts.exp
@@ -49,3 +49,30 @@ gdb_test "p foo2_1 (b)" "= 21" "pointer pointer to pointer pointer"
gdb_test "p foo2_2 (b)" "Cannot resolve.*" "pointer pointer to array of arrays"
gdb_test "p foo2_3 (b)" "= 23" "pointer pointer to array of pointers"
gdb_test "p foo2_4 (b)" "Cannot resolve.*" "pointer pointer to array of wrong pointers"
+
+gdb_test "p foo3_1 ((char *) 0, ta)" "Cannot resolve.*" \
+ "check all parameters for badness"
+
+# Tests for null pointer conversion
+global gdb_prompt
+set nl {[\r\n]+}
+set t "null pointer conversion"
+gdb_test_multiple "p foo3_1 (0, 0)" $t {
+ -re "warning: Using non-standard conversion.*$nl$gdb_prompt $" {
+ fail "$t (warning issued)"
+ }
+
+ -re "Cannot resolve function foo3_1 to any overloaded instance$nl$gdb_prompt $" {
+ fail "$t (conversion failed)"
+ }
+
+ -re "\\$\[0-9\]+ = 31$nl$gdb_prompt $" {
+ pass $t
+ }
+}
+gdb_test "p foo3_1 (0, 1)" \
+ "Cannot resolve function foo3_1 to any overloaded instance"
+gdb_test "p foo3_1 (0, (const char**) 1)" " = 31"
+gdb_test "p foo3_2 (0, 0)" "= 32"
+gdb_test "p foo3_2 (0, (char const**) 0)" " = 320"
+