diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2003-02-06 22:34:55 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2003-02-06 22:34:55 +0000 |
commit | 256803d96e0d170715b56684074f13c86675a66e (patch) | |
tree | 5e6f137dbefc65aafce38588c95a64b7233d5ffb /gcc | |
parent | 90330d3193def8b430118466ecb0cf3540d2a40d (diff) | |
download | gcc-256803d96e0d170715b56684074f13c86675a66e.zip gcc-256803d96e0d170715b56684074f13c86675a66e.tar.gz gcc-256803d96e0d170715b56684074f13c86675a66e.tar.bz2 |
re PR c++/8785 (ICE in tsubst, at cp/pt.c:6473)
PR c++/8785
* g++.dg/parse/fused-params1.C: New test.
PR c++/8857
* g++.dg/parse/tmpl-tmpl-operator1.C: New test.
PR c++/8921
* g++.dg/parse/non-dependent1.C: New test.
PR c++/8928
* g++.dg/parse/dupl-tmpl-args1.C: New test.
PR c++/9228
* g++.dg/parse/undefined7.C: New test.
* g++.dg/parse/non-templ1.C: New test.
PR c++/9229
* g++.dg/parse/too-many-tmpl-args1.C: New test.
From-SVN: r62499
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 21 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/fused-params1.C | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/non-dependent1.C | 19 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/non-templ1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C | 20 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/undefined7.C | 5 |
8 files changed, 111 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4f6ad1..7d73641 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2003-02-06 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/8785 + * g++.dg/parse/fused-params1.C: New test. + + PR c++/8857 + * g++.dg/parse/tmpl-tmpl-operator1.C: New test. + + PR c++/8921 + * g++.dg/parse/non-dependent1.C: New test. + + PR c++/8928 + * g++.dg/parse/dupl-tmpl-args1.C: New test. + + PR c++/9228 + * g++.dg/parse/undefined7.C: New test. + * g++.dg/parse/non-templ1.C: New test. + + PR c++/9229 + * g++.dg/parse/too-many-tmpl-args1.C: New test. + 2003-02-06 Eric Botcazou <ebotcazou@libertysurf.fr> * gcc.c-torture/compile/20030206-1.c: New test. diff --git a/gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C b/gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C new file mode 100644 index 0000000..a7beabc --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C @@ -0,0 +1,13 @@ +// PR c++/8928 +// Origin: <sebor@roguewave.com> +// { dg-do compile } + +namespace N +{ + +template <typename T, typename U> struct A {}; +typedef A<int, int> B; + +} + +N::B<int, int> a; // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/fused-params1.C b/gcc/testsuite/g++.dg/parse/fused-params1.C new file mode 100644 index 0000000..2e9378d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/fused-params1.C @@ -0,0 +1,12 @@ +// PR c++/8785 +// Origin: Alexander Zvyagin <Alexander.Zviagine@cern.ch> +// { dg-do compile } + +template <int N,typename T> struct A +{ + typedef T X; + template <int M> void foo (const A<M,X>&); // { dg-error "candidate" } +}; + +template <int N,int M,typename T> +void A<N,T>::foo (const A<M,X>&) {} // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/non-dependent1.C b/gcc/testsuite/g++.dg/parse/non-dependent1.C new file mode 100644 index 0000000..d85ecb1 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/non-dependent1.C @@ -0,0 +1,19 @@ +// PR c++/8921 +// Origin: Chin-Lung Chang <evirt@iis.sinica.edu.tw> +// { dg-do compile } + +struct A +{ + template <typename T> void foo(); +}; + +template <typename T> void bar(A& a) +{ + a.foo<T>(); +} + +void baz() +{ + A a; + bar<int>(a); +} diff --git a/gcc/testsuite/g++.dg/parse/non-templ1.C b/gcc/testsuite/g++.dg/parse/non-templ1.C new file mode 100644 index 0000000..07bb379 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/non-templ1.C @@ -0,0 +1,10 @@ +// PR c++/9228 +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> +// { dg-do compile } + +struct A +{ + struct B { B(int); }; +}; + +template <typename T> typename A<T>::B foo() { return 1; } // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C b/gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C new file mode 100644 index 0000000..dcf2852 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C @@ -0,0 +1,20 @@ +// PR c++/8857 +// Origin: Martin v. Loewis <loewis@informatik.hu-berlin.de> +// { dg-do compile } + +template <typename T> struct A +{ + template <typename U> operator U() { return sizeof(U); } +}; + +template <typename T> struct B +{ + template <template <typename U> class X> operator X<double>() { return X<double>(); } +}; + +int main() +{ + A<double> a; + B<long> b; + a = b; +} diff --git a/gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C b/gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C new file mode 100644 index 0000000..30c2952 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C @@ -0,0 +1,11 @@ +// PR c++/9229 +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> +// { dg-do compile } + +template <typename T> class A +{ // { dg-error "" } + struct B; + template <typename U> friend typename A<U,void>::B foo(); // { dg-error "" } +}; + +template class A<int>; diff --git a/gcc/testsuite/g++.dg/parse/undefined7.C b/gcc/testsuite/g++.dg/parse/undefined7.C new file mode 100644 index 0000000..1a525fc --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/undefined7.C @@ -0,0 +1,5 @@ +// PR c++/9228 +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> +// { dg-do compile } + +template <typename T> typename A<T>::B foo() {} // { dg-error "" } |