aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2003-01-22 23:21:51 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2003-01-22 23:21:51 +0000
commit68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed (patch)
tree5fed5f72c047ff44d182e3a1ded59b755c447ee4 /gcc
parent02ba6302897de5e08844780710f6dea54dae39d5 (diff)
downloadgcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.zip
gcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.tar.gz
gcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.tar.bz2
re PR c++/2738 (ICE on return type specification of a destructor)
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. From-SVN: r61624
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog44
-rw-r--r--gcc/testsuite/g++.dg/parse/attr-ctor1.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/func-def1.C11
-rw-r--r--gcc/testsuite/g++.dg/parse/int-as-enum1.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/namespace5.C5
-rw-r--r--gcc/testsuite/g++.dg/parse/no-typename1.C11
-rw-r--r--gcc/testsuite/g++.dg/parse/no-value1.C14
-rw-r--r--gcc/testsuite/g++.dg/parse/ref1.C17
-rw-r--r--gcc/testsuite/g++.dg/parse/ret-type1.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/specialization1.C6
-rw-r--r--gcc/testsuite/g++.dg/parse/struct-as-enum1.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/tmpl-outside1.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/undefined1.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/undefined2.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/wrong-inline1.C12
15 files changed, 186 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fed915c..80d67ee 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,47 @@
+2003-01-22 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.
+
2003-01-22 Mark Mitchell <mark@codesourcery.com>
PR c++/9298
diff --git a/gcc/testsuite/g++.dg/parse/attr-ctor1.C b/gcc/testsuite/g++.dg/parse/attr-ctor1.C
new file mode 100644
index 0000000..4f8cd1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/attr-ctor1.C
@@ -0,0 +1,8 @@
+// PR c++/6992
+// Origin: <petr@scssoft.com>
+// { dg-do compile }
+
+class A
+{
+ __attribute__((section("whatever"))) A();
+};
diff --git a/gcc/testsuite/g++.dg/parse/func-def1.C b/gcc/testsuite/g++.dg/parse/func-def1.C
new file mode 100644
index 0000000..00c973d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/func-def1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/int-as-enum1.C b/gcc/testsuite/g++.dg/parse/int-as-enum1.C
new file mode 100644
index 0000000..2bf9cc0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/int-as-enum1.C
@@ -0,0 +1,6 @@
+// PR c++/4207
+// Origin: <wanderer@rsu.ru>
+// { dg-do compile }
+
+typedef int A;
+enum ::A {}; // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/namespace5.C b/gcc/testsuite/g++.dg/parse/namespace5.C
new file mode 100644
index 0000000..277c0c8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/namespace5.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/no-typename1.C b/gcc/testsuite/g++.dg/parse/no-typename1.C
new file mode 100644
index 0000000..42059ce
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/no-typename1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/no-value1.C b/gcc/testsuite/g++.dg/parse/no-value1.C
new file mode 100644
index 0000000..443a389
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/no-value1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/ref1.C b/gcc/testsuite/g++.dg/parse/ref1.C
new file mode 100644
index 0000000..d1dffb0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/ref1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/ret-type1.C b/gcc/testsuite/g++.dg/parse/ret-type1.C
new file mode 100644
index 0000000..a5dc93a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/ret-type1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/specialization1.C b/gcc/testsuite/g++.dg/parse/specialization1.C
new file mode 100644
index 0000000..7378570
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/specialization1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/struct-as-enum1.C b/gcc/testsuite/g++.dg/parse/struct-as-enum1.C
new file mode 100644
index 0000000..016c603
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/struct-as-enum1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/tmpl-outside1.C b/gcc/testsuite/g++.dg/parse/tmpl-outside1.C
new file mode 100644
index 0000000..07c89e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/tmpl-outside1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/undefined1.C b/gcc/testsuite/g++.dg/parse/undefined1.C
new file mode 100644
index 0000000..0ae4e88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/undefined1.C
@@ -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 --git a/gcc/testsuite/g++.dg/parse/undefined2.C b/gcc/testsuite/g++.dg/parse/undefined2.C
new file mode 100644
index 0000000..a7e76f1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/undefined2.C
@@ -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 "" }
diff --git a/gcc/testsuite/g++.dg/parse/wrong-inline1.C b/gcc/testsuite/g++.dg/parse/wrong-inline1.C
new file mode 100644
index 0000000..22b9a97
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/wrong-inline1.C
@@ -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 "" }