diff options
author | Jason Merrill <jason@gcc.gnu.org> | 1997-11-20 23:05:13 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-11-20 23:05:13 -0500 |
commit | e03a602a7dcd8e2625100ea1beb08d5d86ca8e99 (patch) | |
tree | cce95f8a2a311f37c064f78e0a8898fb0b0ed714 /gcc | |
parent | 858e4e8cfd71520171ec34839f62cae712b7ee55 (diff) | |
download | gcc-e03a602a7dcd8e2625100ea1beb08d5d86ca8e99.zip gcc-e03a602a7dcd8e2625100ea1beb08d5d86ca8e99.tar.gz gcc-e03a602a7dcd8e2625100ea1beb08d5d86ca8e99.tar.bz2 |
tests
From-SVN: r16629
Diffstat (limited to 'gcc')
18 files changed, 282 insertions, 10 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/new3.C b/gcc/testsuite/g++.old-deja/g++.brendan/new3.C index 9e7eb8a..5f5c988 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/new3.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/new3.C @@ -1,10 +1,11 @@ // GROUPS passed operator-new #include <stdio.h> #include <stdlib.h> +#include <new> int pass = 0; -void *operator new(size_t sz){ +void *operator new(size_t sz) throw (std::bad_alloc) { void *p; diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C index 8d3f8fd..6e84da5 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C @@ -13,7 +13,7 @@ class B TP _a; public: B (A &(*f) (A &, TP), TP a) : _f (f), _a (a) {} - friend A &operator<< (A &o, const B<TP> &m); + friend A &operator<< <>(A &o, const B<TP> &m); }; template <class TP> diff --git a/gcc/testsuite/g++.old-deja/g++.eh/pdel1.C b/gcc/testsuite/g++.old-deja/g++.eh/pdel1.C new file mode 100644 index 0000000..b30b402 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/pdel1.C @@ -0,0 +1,22 @@ +// Test for calling placement delete. + +#include <new> +#include <stddef.h> + +int r = 1; + +struct A { + A() { throw 1; } + void operator delete (void *p, int, int) { r = 0; ::operator delete (p); } +}; + +void * operator new (size_t size, int, int) { return operator new (size); } + +main () +{ + try { + A* ap = new (1, 5) A; + } catch (...) { } + + return r; +} diff --git a/gcc/testsuite/g++.old-deja/g++.eh/pdel2.C b/gcc/testsuite/g++.old-deja/g++.eh/pdel2.C new file mode 100644 index 0000000..c9b9bd1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/pdel2.C @@ -0,0 +1,22 @@ +// Test for not calling mismatched placement delete. + +#include <new> +#include <stddef.h> + +int r = 0; + +struct A { + A() { throw 1; } + void operator delete (void *p, int, long) { r = 1; ::operator delete (p); } +}; + +void * operator new (size_t size, int, int) { return operator new (size); } + +main () +{ + try { + A* ap = new (1, 5) A; + } catch (...) { } + + return r; +} diff --git a/gcc/testsuite/g++.old-deja/g++.eh/spec1.C b/gcc/testsuite/g++.old-deja/g++.eh/spec1.C new file mode 100644 index 0000000..73ee960 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/spec1.C @@ -0,0 +1,38 @@ +// Testing exception specifications. +// Test 1: the original exception succeeds. + +#include <stdlib.h> +#include <exception> + +void my_term () { exit (1); } +void my_unexp () { throw 42; } + +void +f () throw (char, int, bad_exception) +{ + throw 'a'; +} + +main () +{ + set_terminate (my_term); + set_unexpected (my_unexp); + + try + { + f (); + } + catch (char) + { + return 0; + } + catch (int) + { + return 3; + } + catch (bad_exception) + { + return 4; + } + return 5; +} diff --git a/gcc/testsuite/g++.old-deja/g++.eh/spec2.C b/gcc/testsuite/g++.old-deja/g++.eh/spec2.C new file mode 100644 index 0000000..4401377 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/spec2.C @@ -0,0 +1,38 @@ +// Testing exception specifications. +// Test 2: the second throw succeeds. + +#include <stdlib.h> +#include <exception> + +void my_term () { exit (1); } +void my_unexp () { throw 42; } + +void +f () throw (int, bad_exception) +{ + throw 'a'; +} + +main () +{ + set_terminate (my_term); + set_unexpected (my_unexp); + + try + { + f (); + } + catch (char) + { + return 2; + } + catch (int) + { + return 0; + } + catch (bad_exception) + { + return 4; + } + return 5; +} diff --git a/gcc/testsuite/g++.old-deja/g++.eh/spec3.C b/gcc/testsuite/g++.old-deja/g++.eh/spec3.C new file mode 100644 index 0000000..148be76 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/spec3.C @@ -0,0 +1,38 @@ +// Testing exception specifications. +// Test 3: the bad_exception throw succeeds. + +#include <stdlib.h> +#include <exception> + +void my_term () { exit (1); } +void my_unexp () { throw 42; } + +void +f () throw (bad_exception) +{ + throw 'a'; +} + +main () +{ + set_terminate (my_term); + set_unexpected (my_unexp); + + try + { + f (); + } + catch (char) + { + return 2; + } + catch (int) + { + return 3; + } + catch (bad_exception) + { + return 0; + } + return 5; +} diff --git a/gcc/testsuite/g++.old-deja/g++.eh/spec4.C b/gcc/testsuite/g++.old-deja/g++.eh/spec4.C new file mode 100644 index 0000000..d8b8ce7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/spec4.C @@ -0,0 +1,38 @@ +// Testing exception specifications. +// Test 4: all throws fail, call terminate. + +#include <stdlib.h> +#include <exception> + +void my_term () { exit (0); } +void my_unexp () { throw 42; } + +void +f () throw (short) +{ + throw 'a'; +} + +main () +{ + set_terminate (my_term); + set_unexpected (my_unexp); + + try + { + f (); + } + catch (char) + { + return 2; + } + catch (int) + { + return 3; + } + catch (bad_exception) + { + return 4; + } + return 5; +} diff --git a/gcc/testsuite/g++.old-deja/g++.jason/new.C b/gcc/testsuite/g++.old-deja/g++.jason/new.C index 1a71ea5..0ac2562 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/new.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/new.C @@ -1,11 +1,11 @@ // Bug: new doesn't make sure that the count is an integral value. -typedef __SIZE_TYPE__ size_t; +#include <new> extern "C" int printf (const char *, ...); extern "C" void *malloc (size_t); size_t s; -void * operator new (size_t siz) { +void * operator new (size_t siz) throw (std::bad_alloc) { if (s == 0) s = siz; else diff --git a/gcc/testsuite/g++.old-deja/g++.jason/overload.C b/gcc/testsuite/g++.old-deja/g++.jason/overload.C index 7d7aeee..bc41672 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/overload.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/overload.C @@ -11,7 +11,7 @@ void operator+ (int, bar&); template <class T> class foo { public: - friend void operator+ (int, T&); + friend void operator+ <> (int, T&); }; class baz; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/overload10.C b/gcc/testsuite/g++.old-deja/g++.jason/overload10.C index a2402fc..cd18382 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/overload10.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/overload10.C @@ -2,6 +2,7 @@ // Bug: g++ fails to recognize multiple previous instantiations of a function // template. // Build don't link: +// Special g++ Options: -fguiding-decls template <class T> class A { diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template10.C b/gcc/testsuite/g++.old-deja/g++.jason/template10.C index 35841f6..18a574a 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/template10.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/template10.C @@ -5,7 +5,7 @@ class ostream; template <class TP> class smanip { public: - friend ostream& operator<<(ostream &o, const smanip<TP>&m); + friend ostream& operator<< <>(ostream &o, const smanip<TP>&m); }; template<class TP> diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend1.C b/gcc/testsuite/g++.old-deja/g++.law/friend1.C index 2c26ad6..5628e0b 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/friend1.C +++ b/gcc/testsuite/g++.old-deja/g++.law/friend1.C @@ -7,8 +7,9 @@ // Message-ID: <m0n2Vec-0000GrC@rwave.roguewave.com> #include <stddef.h> +#include <new> struct Foo { - friend void* operator new(size_t); + friend void* operator new(size_t) throw (std::bad_alloc); friend void operator delete(void*) throw (); Foo(); ~Foo(); diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C index 1813a43..235cbfb 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C @@ -1,9 +1,10 @@ #include <iostream.h> #include <stddef.h> +#include <new> int fail = 1; -static void *operator new(size_t size) { +static void *operator new(size_t size) throw (std::bad_alloc) { --fail; return (void*) 0; } diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p755.C b/gcc/testsuite/g++.old-deja/g++.mike/p755.C index e01fc64..9dbebff 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/p755.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/p755.C @@ -1,10 +1,10 @@ // It checks to see if you can define your own global new operator. // prms-id: 755 -typedef __SIZE_TYPE__ size_t; +#include <new> extern "C" void exit(int); -void* operator new(size_t sz) { +void* operator new(size_t sz) throw (std::bad_alloc) { void* p = 0; exit(0); return p; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/typename4.C b/gcc/testsuite/g++.old-deja/g++.pt/typename4.C new file mode 100644 index 0000000..67ac939 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename4.C @@ -0,0 +1,26 @@ +// Build don't link: + +template <class T> +struct A +{ + typedef T A_Type; +}; + + +template <class U> +struct B : public A<U> +{ +}; + + +template <class U> +struct C : public B<U> +{ + A_Type Func(); +}; + + +template <class U> +C<U>::A_Type C<U>::Func() +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/typename5.C b/gcc/testsuite/g++.old-deja/g++.pt/typename5.C new file mode 100644 index 0000000..202dadf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename5.C @@ -0,0 +1,26 @@ +// Build don't link: + +template <class T> +struct A +{ + typedef T A_Type; +}; + + +template <class U> +struct B : public A<U> +{ +}; + + +template <class U> +struct C : public B<U> +{ + void Func(A_Type); +}; + + +template <class U> +void C<U>::Func(A_Type) +{ +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/typename6.C b/gcc/testsuite/g++.old-deja/g++.pt/typename6.C new file mode 100644 index 0000000..4a8f05b --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename6.C @@ -0,0 +1,20 @@ +// Build don't link: + +template <class T> +struct A +{ + typedef T A_Type; +}; + + +template <class U> +struct B : public A<U> +{ + A_Type Func(); +}; + + +template <class U> +A<U>::A_Type B<U>::Func() +{ +} |