aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2003-02-06 22:34:55 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2003-02-06 22:34:55 +0000
commit256803d96e0d170715b56684074f13c86675a66e (patch)
tree5e6f137dbefc65aafce38588c95a64b7233d5ffb /gcc
parent90330d3193def8b430118466ecb0cf3540d2a40d (diff)
downloadgcc-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/ChangeLog21
-rw-r--r--gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/fused-params1.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/non-dependent1.C19
-rw-r--r--gcc/testsuite/g++.dg/parse/non-templ1.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C20
-rw-r--r--gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C11
-rw-r--r--gcc/testsuite/g++.dg/parse/undefined7.C5
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 "" }