From: Volker Reichelt Date: Thu, 6 Feb 2003 22:34:55 +0000 (+0000) Subject: re PR c++/8785 (ICE in tsubst, at cp/pt.c:6473) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=256803d96e0d170715b56684074f13c86675a66e;p=gcc.git 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a4f6ad19d27..7d7364128e2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,24 @@ +2003-02-06 Volker Reichelt + + 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 * 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 00000000000..a7beabc9082 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C @@ -0,0 +1,13 @@ +// PR c++/8928 +// Origin: +// { dg-do compile } + +namespace N +{ + +template struct A {}; +typedef A B; + +} + +N::B 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 00000000000..2e9378d93e1 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/fused-params1.C @@ -0,0 +1,12 @@ +// PR c++/8785 +// Origin: Alexander Zvyagin +// { dg-do compile } + +template struct A +{ + typedef T X; + template void foo (const A&); // { dg-error "candidate" } +}; + +template +void A::foo (const A&) {} // { 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 00000000000..d85ecb13ae4 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/non-dependent1.C @@ -0,0 +1,19 @@ +// PR c++/8921 +// Origin: Chin-Lung Chang +// { dg-do compile } + +struct A +{ + template void foo(); +}; + +template void bar(A& a) +{ + a.foo(); +} + +void baz() +{ + A a; + bar(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 00000000000..07bb3793a6d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/non-templ1.C @@ -0,0 +1,10 @@ +// PR c++/9228 +// Origin: Wolfgang Bangerth +// { dg-do compile } + +struct A +{ + struct B { B(int); }; +}; + +template typename A::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 00000000000..dcf2852d1e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C @@ -0,0 +1,20 @@ +// PR c++/8857 +// Origin: Martin v. Loewis +// { dg-do compile } + +template struct A +{ + template operator U() { return sizeof(U); } +}; + +template struct B +{ + template