This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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 "" }
===============================================================================



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]