From: Jason Merrill Date: Fri, 21 Nov 1997 04:04:33 +0000 (-0500) Subject: tests X-Git-Tag: releases/egcs-1.0.0~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa0defa73c14b265fba88df2171a6133c2a768a7;p=thirdparty%2Fgcc.git tests From-SVN: r16628 --- diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/new3.C b/gcc/testsuite/g++.old-deja/g++.brendan/new3.C index 9e7eb8a855fd..3449eade6d16 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/new3.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/new3.C @@ -1,35 +1,2 @@ -// GROUPS passed operator-new -#include -#include - -int pass = 0; - -void *operator new(size_t sz){ - - void *p; - - pass = 1; - p = malloc(sz); - return p; -} - -class A { -public: - A() {} - ~A() {} - - int a; - int b; -}; - - -int main() -{ - A *bb = new A[10]; - delete [] bb; - - if (pass) - printf ("PASS\n"); - else - printf ("FAIL\n"); -} +#include +void *operator new(size_t sz) throw (std::bad_alloc) { diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C index 8d3f8fd81ac3..efc2e8290df8 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C @@ -1,38 +1 @@ -// Build don't link: -// GROUPS passed visibility -// Used to say: -// manip.cc:17: member `_f' is a private member of class `B' -// manip.cc:17: member `_a' is a private member of class `B' - -class A {}; - -template -class B -{ - A &(*_f) (A &, TP); - TP _a; -public: - B (A &(*f) (A &, TP), TP a) : _f (f), _a (a) {} - friend A &operator<< (A &o, const B &m); -}; - -template -inline A & -operator<< (A &o, const B &m) -{ - (*m._f) (o, m._a); - return o; -} - -A &setw (A &, int); -B setw (int n) -{ - return B (setw, n); -} - -A x; - -void f () -{ - x << setw (2); -} + friend A &operator<< <>(A &o, const B &m); diff --git a/gcc/testsuite/g++.old-deja/g++.jason/new.C b/gcc/testsuite/g++.old-deja/g++.jason/new.C index 1a71ea5f3c53..8fe928da7f4f 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/new.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/new.C @@ -1,25 +1,2 @@ -// Bug: new doesn't make sure that the count is an integral value. - -typedef __SIZE_TYPE__ size_t; -extern "C" int printf (const char *, ...); -extern "C" void *malloc (size_t); -size_t s; - -void * operator new (size_t siz) { - if (s == 0) - s = siz; - else - s = (s != siz); - return malloc (siz); -} - -main() -{ - s = 0; - - float f = 3; - int* b1 = new int[(int)f]; - int* b2 = new int[f]; - - return s; -} +#include +void * operator new (size_t siz) throw (std::bad_alloc) { diff --git a/gcc/testsuite/g++.old-deja/g++.jason/overload.C b/gcc/testsuite/g++.old-deja/g++.jason/overload.C index 7d7aeee05b1a..b055212efb02 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/overload.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/overload.C @@ -1,20 +1 @@ -// Build don't link: -// GROUPS passed overloading -enum bar {}; - -void operator+ (int, int);// ERROR - .* -void operator+ (bar&, int); - -template void operator+ (int b, T& t) { return b; } -void operator+ (int, bar&); - -template class foo -{ -public: - friend void operator+ (int, T&); -}; - -class baz; - -class foo; -class foo; + friend void operator+ <> (int, T&); diff --git a/gcc/testsuite/g++.old-deja/g++.jason/overload10.C b/gcc/testsuite/g++.old-deja/g++.jason/overload10.C index a2402fcd63e6..87eb01454231 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/overload10.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/overload10.C @@ -1,21 +1 @@ -// PRMS Id: 4257 (second bug) -// Bug: g++ fails to recognize multiple previous instantiations of a function -// template. -// Build don't link: - -template -class A { - int i; - - friend int foo (A&); -}; - -template int foo (A& a) { return a.i; } - -A a; -A dummy; - -void bar () -{ - foo (a); // gets bogus error - two foo(A&)'s -} +// Special g++ Options: -fguiding-decls diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template10.C b/gcc/testsuite/g++.old-deja/g++.jason/template10.C index 35841f64712d..64fff92d04f8 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/template10.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/template10.C @@ -1,26 +1 @@ -// Bug: member operator shadows global template in tsubst. -// Build don't link: - -class ostream; - -template class smanip { -public: - friend ostream& operator<<(ostream &o, const smanip&m); -}; - -template -ostream& operator<<(ostream& o, const smanip& m) -{ return o;} - -class X -{ -public: - X operator<<(int); // commenting out this line makes it work! - void print(ostream& os); -}; - -void X::print(ostream& os) -{ - smanip smd; - os << smd; // gets bogus error -} + friend ostream& operator<< <>(ostream &o, const smanip&m); diff --git a/gcc/testsuite/g++.old-deja/g++.law/friend1.C b/gcc/testsuite/g++.old-deja/g++.law/friend1.C index 2c26ad675315..1e3830ada725 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/friend1.C +++ b/gcc/testsuite/g++.old-deja/g++.law/friend1.C @@ -1,17 +1,2 @@ -// Build don't link: -// GROUPS passed friends -// friends file -// From: rwave!myersn%rwave.roguewave@cs.orst.edu (Nathan Myers) -// Date: Thu, 17 Dec 92 16:33 PST -// Subject: 2.3.2: friend decl of new confuses constructor -// Message-ID: - -#include -struct Foo { - friend void* operator new(size_t); - friend void operator delete(void*) throw (); - Foo(); - ~Foo(); -}; -Foo::Foo() { } -Foo::~Foo() { } +#include + friend void* operator new(size_t) throw (std::bad_alloc); diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C index 1813a43814fc..b5c09370dfa7 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C @@ -1,15 +1,2 @@ -#include -#include - -int fail = 1; - -static void *operator new(size_t size) { - --fail; - return (void*) 0; -} - -main() { - cout << ""; - new int; - return fail; -} +#include +static void *operator new(size_t size) throw (std::bad_alloc) { diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p755.C b/gcc/testsuite/g++.old-deja/g++.mike/p755.C index e01fc64e8ce6..cf0c289e8c14 100644 --- a/gcc/testsuite/g++.old-deja/g++.mike/p755.C +++ b/gcc/testsuite/g++.old-deja/g++.mike/p755.C @@ -1,17 +1,2 @@ -// It checks to see if you can define your own global new operator. -// prms-id: 755 - -typedef __SIZE_TYPE__ size_t; -extern "C" void exit(int); - -void* operator new(size_t sz) { - void* p = 0; - exit(0); - return p; -} - -main () { - int* i = new int; - delete i; - return 1; -} +#include +void* operator new(size_t sz) throw (std::bad_alloc) { 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 000000000000..67ac939b58a8 --- /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 000000000000..202dadf12b61 --- /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 000000000000..4a8f05b08e32 --- /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() +{ +}