From e03a602a7dcd8e2625100ea1beb08d5d86ca8e99 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 20 Nov 1997 23:05:13 -0500 Subject: [PATCH] tests From-SVN: r16629 --- gcc/testsuite/g++.old-deja/g++.brendan/new3.C | 3 +- .../g++.old-deja/g++.brendan/visibility3.C | 2 +- gcc/testsuite/g++.old-deja/g++.eh/pdel1.C | 22 +++++++++++ gcc/testsuite/g++.old-deja/g++.eh/pdel2.C | 22 +++++++++++ gcc/testsuite/g++.old-deja/g++.eh/spec1.C | 38 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.eh/spec2.C | 38 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.eh/spec3.C | 38 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.eh/spec4.C | 38 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.jason/new.C | 4 +- .../g++.old-deja/g++.jason/overload.C | 2 +- .../g++.old-deja/g++.jason/overload10.C | 1 + .../g++.old-deja/g++.jason/template10.C | 2 +- gcc/testsuite/g++.old-deja/g++.law/friend1.C | 3 +- gcc/testsuite/g++.old-deja/g++.mike/net46.C | 3 +- gcc/testsuite/g++.old-deja/g++.mike/p755.C | 4 +- gcc/testsuite/g++.old-deja/g++.pt/typename4.C | 26 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename5.C | 26 +++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/typename6.C | 20 ++++++++++ 18 files changed, 282 insertions(+), 10 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/pdel1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/pdel2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/spec1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/spec2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/spec3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.eh/spec4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/typename6.C diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/new3.C b/gcc/testsuite/g++.old-deja/g++.brendan/new3.C index 9e7eb8a855f..5f5c988c29a 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 #include +#include 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 8d3f8fd81ac..6e84da5ac51 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 &m); + friend A &operator<< <>(A &o, const B &m); }; template 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 00000000000..b30b402d1be --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/pdel1.C @@ -0,0 +1,22 @@ +// Test for calling placement delete. + +#include +#include + +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 00000000000..c9b9bd13edd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.eh/pdel2.C @@ -0,0 +1,22 @@ +// Test for not calling mismatched placement delete. + +#include +#include + +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 00000000000..73ee960f120 --- /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 +#include + +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 00000000000..44013775761 --- /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 +#include + +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 00000000000..148be763214 --- /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 +#include + +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 00000000000..d8b8ce7ed32 --- /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 +#include + +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 1a71ea5f3c5..0ac2562d7f9 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 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 7d7aeee05b1..bc41672c3e5 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 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 a2402fcd63e..cd18382b79f 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 A { diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template10.C b/gcc/testsuite/g++.old-deja/g++.jason/template10.C index 35841f64712..18a574a28eb 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 smanip { public: - friend ostream& operator<<(ostream &o, const smanip&m); + friend ostream& operator<< <>(ostream &o, const smanip&m); }; template diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend1.C b/gcc/testsuite/g++.old-deja/g++.law/friend1.C index 2c26ad67531..5628e0b4074 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: #include +#include 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 1813a43814f..235cbfb87e1 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 #include +#include 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 e01fc64e8ce..9dbebff5485 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 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 00000000000..67ac939b58a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename4.C @@ -0,0 +1,26 @@ +// Build don't link: + +template +struct A +{ + typedef T A_Type; +}; + + +template +struct B : public A +{ +}; + + +template +struct C : public B +{ + A_Type Func(); +}; + + +template +C::A_Type C::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 00000000000..202dadf12b6 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename5.C @@ -0,0 +1,26 @@ +// Build don't link: + +template +struct A +{ + typedef T A_Type; +}; + + +template +struct B : public A +{ +}; + + +template +struct C : public B +{ + void Func(A_Type); +}; + + +template +void C::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 00000000000..4a8f05b08e3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/typename6.C @@ -0,0 +1,20 @@ +// Build don't link: + +template +struct A +{ + typedef T A_Type; +}; + + +template +struct B : public A +{ + A_Type Func(); +}; + + +template +A::A_Type B::Func() +{ +} -- 2.30.2