[PATCH] More testcases for the new parser

Volker Reichelt reichelt@igpm.rwth-aachen.de
Thu Feb 6 22:37:00 GMT 2003


The following patch adds 7 new tests for the new parser to the
testsuite. Committed on mainline.

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.


===============================================================================
diff -Nup /dev/null g++.dg/parse/fused-params1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/fused-params1.C	Wed Feb  5 19:05:19 2003
@@ -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 -Nup /dev/null g++.dg/parse/tmpl-tmpl-operator1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/tmpl-tmpl-operator1.C	Wed Feb  5 19:07:10 2003
@@ -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 -Nup /dev/null g++.dg/parse/non-dependent1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/non-dependent1.C	Wed Feb  5 19:10:57 2003
@@ -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 -Nup /dev/null g++.dg/parse/dupl-tmpl-args1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/dupl-tmpl-args1.C	Wed Feb  5 19:14:41 2003
@@ -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 -Nup /dev/null g++.dg/parse/undefined7.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/undefined7.C	Wed Feb  5 19:24:10 2003
@@ -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 "" }
===============================================================================
diff -Nup /dev/null g++.dg/parse/non-templ1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/non-templ1.C	Wed Feb  5 19:25:30 2003
@@ -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 -Nup /dev/null g++.dg/parse/too-many-tmpl-args1.C
--- /dev/null	Wed Feb  5 15:03:05 2003
+++ g++.dg/parse/too-many-tmpl-args1.C	Wed Feb  5 19:17:32 2003
@@ -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>;
===============================================================================




More information about the Gcc-patches mailing list