re PR c++/8785 (ICE in tsubst, at cp/pt.c:6473)
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>
Thu, 6 Feb 2003 22:34:55 +0000 (22:34 +0000)
committerVolker Reichelt <reichelt@gcc.gnu.org>
Thu, 6 Feb 2003 22:34:55 +0000 (22:34 +0000)
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

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/dupl-tmpl-args1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/fused-params1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/non-dependent1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/non-templ1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/tmpl-tmpl-operator1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/too-many-tmpl-args1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/undefined7.C [new file with mode: 0644]

index a4f6ad1..7d73641 100644 (file)
@@ -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 (file)
index 0000000..a7beabc
--- /dev/null
@@ -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 (file)
index 0000000..2e9378d
--- /dev/null
@@ -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 (file)
index 0000000..d85ecb1
--- /dev/null
@@ -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 (file)
index 0000000..07bb379
--- /dev/null
@@ -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 (file)
index 0000000..dcf2852
--- /dev/null
@@ -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 (file)
index 0000000..30c2952
--- /dev/null
@@ -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 (file)
index 0000000..1a525fc
--- /dev/null
@@ -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 "" }