[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