diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.brendan/overload2.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.brendan/overload2.C | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/overload2.C b/gcc/testsuite/g++.old-deja/g++.brendan/overload2.C new file mode 100644 index 000000000..0d8ad4833 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.brendan/overload2.C @@ -0,0 +1,44 @@ +// { dg-do run } +// GROUPS passed overloading +// Check that calls to the correct overloaded virtual +// functions are generated even where the type of the formal +// arguments for the overloadings are similar or related. + +extern "C" int printf (const char *, ...); + +int proper_method_called = 0; + +struct base { + int member; + virtual void method (char) + { + } + virtual void method (char *) + { + } +}; + +struct derived : public base { + int member; + virtual void method (char) + { + } + virtual void method (char *) + { + proper_method_called++; + } +}; + +char *message; + +int main () +{ + derived derived_object; + + derived_object.method (message); + + if (proper_method_called != 1) + { printf ("FAIL\n"); return 1; } + else + printf ("PASS\n"); +} |