This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Testcases for new parser
- From: Volker Reichelt <reichelt at igpm dot rwth-aachen dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 9 Jan 2003 22:59:53 +0100
- Subject: [PATCH] Testcases for new parser
The following patch contains several testcases for PR's that
were fixed by the new parser.
Could somebody please approve the patch and apply it to mainline?
Thanks,
Volker
2003-01-09 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/2738
* g++.dg/parse/ret-type1.C: New test.
PR c++/3792
* g++.dg/parse/tmpl-outside1.C: New test.
PR c++/4207
* g++.dg/parse/int-as-enum1.C: New test.
PR c++/4903
* g++.dg/parse/no-typename1.C: New test.
PR c++/5533
* g++.dg/parse/no-value1.C: New test.
PR c++/5921
* g++.dg/parse/wrong-inline1.C: New test.
PR c++/6402
* g++.dg/parse/ref1.C: New test.
PR c++/6992
* g++.dg/parse/attr-ctor1.C: New test.
PR c++/7229
* g++.dg/parse/namespace5.C: New test.
PR c++/7917
* g++.dg/parse/func-def1.C: New test.
PR c++/8143
* g++.dg/parse/undefined1.C: New test.
PR c++/5723, PR c++/8522
* g++.dg/parse/specialization1.C: New test.
PR c++/163, PR c++/8595
* g++.dg/parse/struct-as-enum1.C: New test.
PR c++/9173
* g++.dg/parse/undefined2.C: New test.
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/ret-type1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/ret-type1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,10 @@
+// PR c++/2738
+// Origin: Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de>
+// { dg-do compile }
+
+template <int i> class A
+{
+ class C { C(); };
+};
+
+template <int i> void A<i>::C::C () {} // { dg-error "return type" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/tmpl-outside1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/tmpl-outside1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,10 @@
+// PR c++/3792
+// Origin: <david.abrahams@rcn.com>
+// { dg-do compile }
+
+struct X
+{
+ template <int i> struct Y {};
+};
+
+typedef X::template Y<0> y; // { dg-error "template" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/int-as-enum1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/int-as-enum1.C Thu Jan 9 17:04:50 2003
@@ -0,0 +1,6 @@
+// PR c++/4207
+// Origin: <wanderer@rsu.ru>
+// { dg-do compile }
+
+typedef int A;
+enum ::A {}; // { dg-error "" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/no-typename1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/no-typename1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,11 @@
+// PR c++/4903
+// Origin: Dan Marinescu <theverylittleone@hotmail.com>
+// { dg-do compile }
+
+template <typename T> struct A
+{
+ template <typename U> struct B
+ {
+ A<T>::template B<U> foo(); // { dg-error "" }
+ };
+};
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/no-value1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/no-value1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,14 @@
+// PR c++/5533
+// { dg-do compile }
+
+namespace N
+{
+ template <class T> struct A{};
+}
+
+template <class T> void foo(T) {}
+
+void bar()
+{
+ foo(N::A); // { dg-error "" }
+}
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/wrong-inline1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/wrong-inline1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,12 @@
+// PR c++/5921
+// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+// { dg-do compile }
+
+struct A
+{
+ struct B { B(); };
+};
+
+static A::B b;
+
+inline template <int i> void f (); // { dg-error "" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/ref1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/ref1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,17 @@
+// PR c++/6402
+// Origin: Wolfgang Bangerth <wolfgang@dealii.org>
+// { dg-do compile }
+
+class A
+{
+ A (const A&);
+ public:
+ A();
+};
+
+struct B { A a; };
+
+struct C : public B
+{
+ void foo() { const A &ref = B::a; } // taking reference, not a copy!
+};
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/attr-ctor1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/attr-ctor1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,8 @@
+// PR c++/6992
+// Origin: <petr@scssoft.com>
+// { dg-do compile }
+
+class A
+{
+ __attribute__((section("whatever"))) A();
+};
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/namespace5.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/namespace5.C Thu Jan 9 17:05:15 2003
@@ -0,0 +1,5 @@
+// PR c++/7229
+// { dg-do compile }
+
+namespace A { namespace B { typedef int type; } }
+typename A::B<0>::type x; // { dg-error "" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/func-def1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/func-def1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,11 @@
+// PR c++/7917
+// Origin: VACLAV HAISMAN <V.Haisman@sh.cvut.cz>
+// { dg-do compile }
+
+struct A
+{
+ int i;
+ void foo() = 0 {} // { dg-error "" }
+
+ A() : i(0) {}
+};
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/undefined1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/undefined1.C Thu Jan 9 21:09:02 2003
@@ -0,0 +1,10 @@
+// PR c++/8143
+// { dg-do compile }
+
+struct foo
+{
+ X x; // { dg-error "" }
+
+ foo(X) {} // { dg-error "" }
+ foo(X y, int) : x() {} // { dg-error "" }
+};
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/specialization1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/specialization1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,6 @@
+// PR c++/5723, PR c++/8522
+// Origin: Matthias Kleinmann, Peter Karl Mueller <peter.karl.mueller@gmx.de>
+// { dg-do compile }
+
+template <typename T> class A;
+template <typename T> class A<T>::B; // { dg-error "declaration" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/struct-as-enum1.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/struct-as-enum1.C Thu Jan 9 12:11:00 2003
@@ -0,0 +1,10 @@
+// PR c++/163, PR c++/8595
+// Origin: <martin@loewis.home.cs.tu-berlin.de>, Mark Leone <mleone@pixar.com>
+// { dg-do compile }
+
+namespace N
+{
+ struct A {};
+}
+
+typedef enum N::A B; // { dg-error "enum" }
===============================================================================
diff -Nup /dev/null testsuite/g++.dg/parse/undefined2.C
--- /dev/null Thu Jan 1 01:00:00 1970
+++ testsuite/g++.dg/parse/undefined2.C Thu Jan 9 21:16:18 2003
@@ -0,0 +1,12 @@
+// PR c++/9173
+// Origin: <wwieser@gmx.de>
+// { dg-do compile }
+
+class A {};
+
+class B
+{
+ void foo(int,A::X); // { dg-error "" }
+};
+
+void B::foo(int,A::X) {} // { dg-error "" }
===============================================================================