diff options
author | Jason Merrill <jason@gcc.gnu.org> | 1998-02-02 20:33:18 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-02-02 20:33:18 -0500 |
commit | 867a3ea4fb46341cd43d391f4f667743d5e9e644 (patch) | |
tree | 1f463c3c8e3562d10dce9bbc00b67891d8847463 /gcc | |
parent | 67da32876e58df26f1ae062ad41d8fe8862eddea (diff) | |
download | gcc-867a3ea4fb46341cd43d391f4f667743d5e9e644.zip gcc-867a3ea4fb46341cd43d391f4f667743d5e9e644.tar.gz gcc-867a3ea4fb46341cd43d391f4f667743d5e9e644.tar.bz2 |
new
From-SVN: r17612
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/crash1.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/crash2.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/local6.C | 24 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/spec15.C | 49 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/vaarg.C | 28 |
6 files changed, 142 insertions, 0 deletions
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 T> class A { + public: + class subA {}; +}; + + +template<class T> class B : public A<T> { + 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 <class T> +struct S1 +{ + T* t; + static int foo; +}; + + +struct S2 : public S1<S2> +{ + 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 <class T> +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 <class T> +struct S1 +{ + static void f(); +}; + +template <> +void S1<int>::f() {} + +struct S2 +{ + template <class T> + static void g(T); +}; + +template <> +void S2::g(double) {} + +template <> +void S2::g<int>(int) {} + +template <class T> +struct S3 +{ + template <class U> + static int h(U); +}; + +template <class T> +template <> +int S3<T>::h(int) { return 0; } + +template <> +template <> +int S3<char>::h(int) { return 1; } + +int main() +{ + S1<int>::f(); + S2::g(3.0); + S2::g(7); + + if (S3<double>::h(7) != 0) + abort(); + if (S3<char>::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 <class T> +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 <stdarg.h> + +extern "C" void abort(); + +template <class T> +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(); +} |