diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/defarg7.C | 41 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/defarg8.C | 24 |
2 files changed, 65 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg7.C b/gcc/testsuite/g++.old-deja/g++.other/defarg7.C new file mode 100644 index 0000000..cb5a6da --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/defarg7.C @@ -0,0 +1,41 @@ +// Build don't link: + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Jan 2001 <nathan@codesourcery.com> + +// Bug 1038. Default args on class members can produce circular dependencies. +// Make sure we spot them, and don't depend on a particular ordering. + +struct A +{ + static int Foo (int = Baz ()); // WARNING - circular + static int Baz (int = Foo ()); // WARNING - circular +}; + +struct Test +{ + Test (void * = 0); + void set (const Test &arg = Test ()); +}; + +struct B +{ + static int Bar (int = Foo (1)); + static int Foo (int = Baz ()); + static int Baz (int = Foo (1)); +}; + +int main () +{ + Test t; + t.set (); + t.set (t); + B::Bar (); + B::Bar (1); + B::Baz (); + B::Baz (1); + B::Foo (); + B::Foo (1); + + return 0; +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg8.C b/gcc/testsuite/g++.old-deja/g++.other/defarg8.C new file mode 100644 index 0000000..7188209 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/defarg8.C @@ -0,0 +1,24 @@ +// Build don't link: +// Special g++ options: -pedantic-errors -ansi -w + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 7 Jan 2001 <nathan@codesourcery.com> + +// Bug 1038. Default args on class members can produce circular dependencies. +// Make sure we spot them, and don't depend on a particular ordering. + +struct AA +{ + static int Foo (int = Baz ()); // ERROR - candidate + static int Baz (int = Foo ()); // ERROR - candidate +}; + +int main () +{ + AA::Foo (); // ERROR - no candidate + AA::Foo (1); + AA::Baz (); // ERROR - no candidate + AA::Baz (1); + + return 0; +} |