From 867a3ea4fb46341cd43d391f4f667743d5e9e644 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 2 Feb 1998 20:33:18 -0500 Subject: new From-SVN: r17612 --- gcc/testsuite/g++.old-deja/g++.pt/crash1.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.pt/crash2.C | 14 ++++++++ gcc/testsuite/g++.old-deja/g++.pt/local6.C | 24 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/spec15.C | 49 ++++++++++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C | 16 +++++++++ gcc/testsuite/g++.old-deja/g++.pt/vaarg.C | 28 ++++++++++++++++ 6 files changed, 142 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/crash2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/local6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/spec15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C create mode 100644 gcc/testsuite/g++.old-deja/g++.pt/vaarg.C (limited to 'gcc') diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash1.C b/gcc/testsuite/g++.old-deja/g++.pt/crash1.C new file mode 100644 index 0000000..3d3dd5e --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash1.C @@ -0,0 +1,11 @@ +template class A { + public: + class subA {}; +}; + + +template class B : public A { + public: + class subB : public A::subA {}; // ERROR - not a class or namespace +}; + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash2.C b/gcc/testsuite/g++.old-deja/g++.pt/crash2.C new file mode 100644 index 0000000..3b900c7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash2.C @@ -0,0 +1,14 @@ +// Build don't link: + +template +struct S1 +{ + T* t; + static int foo; +}; + + +struct S2 : public S1 +{ + S2* s; +}; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/local6.C b/gcc/testsuite/g++.old-deja/g++.pt/local6.C new file mode 100644 index 0000000..d3f2f4c --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/local6.C @@ -0,0 +1,24 @@ +extern "C" void abort(); + +template +int f(T) +{ + struct S1 { + virtual int foo() { return 1; } + }; + + struct S2 : public S1 { + int foo() { return 2; } + }; + + S1* s2 = new S2; + + return s2->foo(); +} + + +int main() +{ + if (f(3) != 2) + abort(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/spec15.C b/gcc/testsuite/g++.old-deja/g++.pt/spec15.C new file mode 100644 index 0000000..0aec1433 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/spec15.C @@ -0,0 +1,49 @@ +extern "C" void abort(); + +template +struct S1 +{ + static void f(); +}; + +template <> +void S1::f() {} + +struct S2 +{ + template + static void g(T); +}; + +template <> +void S2::g(double) {} + +template <> +void S2::g(int) {} + +template +struct S3 +{ + template + static int h(U); +}; + +template +template <> +int S3::h(int) { return 0; } + +template <> +template <> +int S3::h(int) { return 1; } + +int main() +{ + S1::f(); + S2::g(3.0); + S2::g(7); + + if (S3::h(7) != 0) + abort(); + if (S3::h(7) != 1) + abort(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C b/gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C new file mode 100644 index 0000000..57ef7e3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C @@ -0,0 +1,16 @@ +extern "C" void abort(); + +template +T f(T) +{ + T t = __extension__ ({ T j = 4; j + 3; }); + return t; +} + + +int main() +{ + if (f(3) != 7) + abort(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/vaarg.C b/gcc/testsuite/g++.old-deja/g++.pt/vaarg.C new file mode 100644 index 0000000..56ae0d4 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/vaarg.C @@ -0,0 +1,28 @@ +#include + +extern "C" void abort(); + +template +T* f(T t, ...) +{ + va_list ap; + + va_start(ap, t); + T* r = va_arg(ap, T*); + va_end(ap); + + return r; +} + + +struct S +{ +}; + +int main() +{ + S s; + + if (f(s, &s) != &s) + abort(); +} -- cgit v1.1