summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-22 10:54:14 +0000
committerreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-22 10:54:14 +0000
commit622d4cf6f5d4d13a92f7266ae697d0be27af90fa (patch)
tree4d437fc947a5a55626fea6398fa5b369ef68e534 /gcc/testsuite
parent8e68bf5f5d049ace68d8c4f52a163692f577b8e3 (diff)
downloadgcc-622d4cf6f5d4d13a92f7266ae697d0be27af90fa.tar.gz
PR c++/3004
* g++.dg/parse/typedef3.C: New test. PR c++/7906 * g++.dg/parse/operator2.C: New test. PR c++/8895 * g++.dg/parse/def-tmpl-arg1.C: New test. PR c++/9282 * g++.dg/parse/funptr1.C: New test. PR c++/9452 * g++.dg/parse/ambig3.C: New test. PR c++/9454 * g++.dg/parse/operator3.C: New test. PR c++/9486 * g++.dg/parse/template10.C: New test. PR c++/9488 * g++.dg/parse/template11.C: New test. PR c++/10150 * g++.dg/parse/invalid-op1.C: New test. PR c++/10247 * g++.dg/parse/condexpr1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69670 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog32
-rw-r--r--gcc/testsuite/g++.dg/parse/ambig3.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/condexpr1.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C9
-rw-r--r--gcc/testsuite/g++.dg/parse/funptr1.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/invalid-op1.C13
-rw-r--r--gcc/testsuite/g++.dg/parse/operator2.C15
-rw-r--r--gcc/testsuite/g++.dg/parse/operator3.C11
-rw-r--r--gcc/testsuite/g++.dg/parse/template10.C15
-rw-r--r--gcc/testsuite/g++.dg/parse/template11.C15
-rw-r--r--gcc/testsuite/g++.dg/parse/typedef3.C7
11 files changed, 155 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 646613a5bb7..49f0c618e68 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,35 @@
+2003-07-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/3004
+ * g++.dg/parse/typedef3.C: New test.
+
+ PR c++/7906
+ * g++.dg/parse/operator2.C: New test.
+
+ PR c++/8895
+ * g++.dg/parse/def-tmpl-arg1.C: New test.
+
+ PR c++/9282
+ * g++.dg/parse/funptr1.C: New test.
+
+ PR c++/9452
+ * g++.dg/parse/ambig3.C: New test.
+
+ PR c++/9454
+ * g++.dg/parse/operator3.C: New test.
+
+ PR c++/9486
+ * g++.dg/parse/template10.C: New test.
+
+ PR c++/9488
+ * g++.dg/parse/template11.C: New test.
+
+ PR c++/10150
+ * g++.dg/parse/invalid-op1.C: New test.
+
+ PR c++/10247
+ * g++.dg/parse/condexpr1.C: New test.
+
2003-07-22 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/ext/packed3.C: New test.
diff --git a/gcc/testsuite/g++.dg/parse/ambig3.C b/gcc/testsuite/g++.dg/parse/ambig3.C
new file mode 100644
index 00000000000..72ee960c95e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/ambig3.C
@@ -0,0 +1,12 @@
+// PR c++/9452
+// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
+// { dg-do compile }
+
+template <int> struct A { static const int i = 1; };
+template <int> struct B {};
+
+template <typename> void foo(B<0>) {} // { dg-error "" }
+
+template <typename, int j> B<A<j>::i-1> foo(B<j>) { return B<0>(); } // { dg-error "" }
+
+void bar() { foo<int>(B<0>()); } // { dg-error "ambiguous" }
diff --git a/gcc/testsuite/g++.dg/parse/condexpr1.C b/gcc/testsuite/g++.dg/parse/condexpr1.C
new file mode 100644
index 00000000000..1ca7dbfa646
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/condexpr1.C
@@ -0,0 +1,13 @@
+// PR c++/10247
+// Origin: Lars Gullik Bjønes <larsbj@lyx.org>
+// { dg-do compile }
+
+struct A {};
+
+A const foo();
+
+void bar()
+{
+ A a = foo();
+ A b = true ? a : foo();
+}
diff --git a/gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C b/gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C
new file mode 100644
index 00000000000..fd85b97c15a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/def-tmpl-arg1.C
@@ -0,0 +1,9 @@
+// PR c++/8895
+// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
+// { dg-do compile }
+
+template <typename X, typename Y = B<X> > struct A // { dg-error "" }
+{
+ A();
+ A(const A&);
+}; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/funptr1.C b/gcc/testsuite/g++.dg/parse/funptr1.C
new file mode 100644
index 00000000000..bf63c122e8b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/funptr1.C
@@ -0,0 +1,13 @@
+// PR c++/9282
+// Origin: Thomas Richter <thor@math.tu-berlin.de>
+// { dg-do compile }
+
+typedef void (*fptr)();
+
+struct A
+{
+ template<int> static void foo() {}
+ template<fptr f> static void bar() { (*f)(); }
+};
+
+fptr f = A::bar< A::foo<0> >;
diff --git a/gcc/testsuite/g++.dg/parse/invalid-op1.C b/gcc/testsuite/g++.dg/parse/invalid-op1.C
new file mode 100644
index 00000000000..37e480983f8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/invalid-op1.C
@@ -0,0 +1,13 @@
+// PR c++/10150
+// Origin: Tom Evans <te200@eng.cam.ac.uk>
+// { dg-do compile }
+
+template <int I> struct A
+{
+ template <int> struct B
+ {
+ enum { e = I * A<I-1>::B }; // { dg-error "" }
+ };
+};
+
+A<0>::B<0> a; // { dg-error "instantiated" }
diff --git a/gcc/testsuite/g++.dg/parse/operator2.C b/gcc/testsuite/g++.dg/parse/operator2.C
new file mode 100644
index 00000000000..a9ebde0d4f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/operator2.C
@@ -0,0 +1,15 @@
+// PR c++/7906
+// Origin: Marcel Loose <loose@astron.nl>
+// { dg-do compile }
+
+template <typename> struct A { typedef int X; };
+
+template <typename T> struct B
+{
+ typedef A<T> Y;
+ struct C { operator typename Y::X() const; };
+};
+
+template <typename T> B<T>::C::operator typename B<T>::Y::X() const { return 0; }
+
+B<int> b;
diff --git a/gcc/testsuite/g++.dg/parse/operator3.C b/gcc/testsuite/g++.dg/parse/operator3.C
new file mode 100644
index 00000000000..08f5c83f229
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/operator3.C
@@ -0,0 +1,11 @@
+// PR c++/9454
+// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
+// { dg-do compile }
+
+template <int> struct A
+{
+ struct B { operator int (); };
+ struct C : B { operator int (); };
+};
+
+A<0> a;
diff --git a/gcc/testsuite/g++.dg/parse/template10.C b/gcc/testsuite/g++.dg/parse/template10.C
new file mode 100644
index 00000000000..d5dec6ed111
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/template10.C
@@ -0,0 +1,15 @@
+// PR c++/9486
+// Origin: John Levon <levon@movementarian.org>
+// { dg-do compile }
+
+template <typename> struct A
+{
+ template <typename T> void foo(T);
+};
+
+template <typename T> void bar()
+{
+ A<void>().template foo<T>(0);
+}
+
+template void bar<int>();
diff --git a/gcc/testsuite/g++.dg/parse/template11.C b/gcc/testsuite/g++.dg/parse/template11.C
new file mode 100644
index 00000000000..e651a3bd076
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/template11.C
@@ -0,0 +1,15 @@
+// PR c++/9488
+// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
+// { dg-do compile }
+
+struct A
+{
+ template <typename> void foo() {}
+};
+
+template <typename T> struct B
+{
+ void bar() { A().foo<T>(); }
+};
+
+template struct B<int>;
diff --git a/gcc/testsuite/g++.dg/parse/typedef3.C b/gcc/testsuite/g++.dg/parse/typedef3.C
new file mode 100644
index 00000000000..380b7530542
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/typedef3.C
@@ -0,0 +1,7 @@
+// PR c++/3004
+// Origin: Travis J.I. Corcoran <tjic@permabit.com>
+// { dg-do compile }
+
+struct A { typedef A* Ptr; };
+
+struct A::Ptr; // { dg-error "" }