aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2005-02-23 05:30:48 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2005-02-23 05:30:48 +0000
commit744b12b65f6923a713593f404f97384c6093dd94 (patch)
treeb003a007ec3edf4d8323134ca4e5d3a88c20f95d /gcc/testsuite
parent90c1d75a9bb8e25aa963da02f9c91f5f40143be1 (diff)
downloadgcc-744b12b65f6923a713593f404f97384c6093dd94.zip
gcc-744b12b65f6923a713593f404f97384c6093dd94.tar.gz
gcc-744b12b65f6923a713593f404f97384c6093dd94.tar.bz2
re PR c++/19991 (Enum not accepted in array-size)
PR c++/19991 * init.c (integral_constant_value): Iterate if the value of a decl is itself a constant. PR c++/20152 * parser.c (cp_parser_class_head): Check for redefintions here. * semantics.c (begin_class_definition): Not here. PR c++/20153 * decl2.c (build_anon_union_vars): Add type parameter. (finish_anon_union): Pass it. PR c++/20148 * error.c (dump_expr): Do not print the body of a BIND_EXPR. Handle STATEMENT_LIST. PR c++/19991 * g++.dg/parse/constant7.C: New test. PR c++/20152 * g++.dg/parse/error27.C: New test. * g++.dg/template/qualttp15.C: Adjust error markers. * g++.old-deja/g++.other/struct1.C: Likewise. PR c++/20153 * g++.dg/template/error17.C: New test. PR c++/20148 * g++.dg/parser/error26.C: New test. From-SVN: r95438
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog16
-rw-r--r--gcc/testsuite/g++.dg/parse/constant7.C9
-rw-r--r--gcc/testsuite/g++.dg/parse/error26.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/error27.C7
-rw-r--r--gcc/testsuite/g++.dg/template/error17.C8
-rw-r--r--gcc/testsuite/g++.dg/template/qualttp15.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/struct1.C20
7 files changed, 64 insertions, 12 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 530d9a3..c72149c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2005-02-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/19991
+ * g++.dg/parse/constant7.C: New test.
+
+ PR c++/20152
+ * g++.dg/parse/error27.C: New test.
+ * g++.dg/template/qualttp15.C: Adjust error markers.
+ * g++.old-deja/g++.other/struct1.C: Likewise.
+
+ PR c++/20153
+ * g++.dg/template/error17.C: New test.
+
+ PR c++/20148
+ * g++.dg/parser/error26.C: New test.
+
2005-02-22 Diego Novillo <dnovillo@redhat.com>
PR tree-optimization/20100
diff --git a/gcc/testsuite/g++.dg/parse/constant7.C b/gcc/testsuite/g++.dg/parse/constant7.C
new file mode 100644
index 0000000..c54ad55
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/constant7.C
@@ -0,0 +1,9 @@
+// PR c++/19991
+
+enum { e = 1 };
+
+template<typename> struct A
+{
+ static const int i = e;
+ char a[i];
+};
diff --git a/gcc/testsuite/g++.dg/parse/error26.C b/gcc/testsuite/g++.dg/parse/error26.C
new file mode 100644
index 0000000..6e2b897
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error26.C
@@ -0,0 +1,12 @@
+// PR c++/20148
+// { dg-options "" }
+
+void foo()
+{
+ if (({int c[2];})) ; // { dg-error "\{\.\.\.\}" }
+}
+
+void bar()
+{
+ if (({})); // { dg-error "\{\.\.\.\}" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/error27.C b/gcc/testsuite/g++.dg/parse/error27.C
new file mode 100644
index 0000000..f52d3ce
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error27.C
@@ -0,0 +1,7 @@
+// PR c++/20152
+
+struct KrSelectionMode { virtual void init() = 0; }; // { dg-error "previous definition" }
+struct KrKDESelectionMode : public KrSelectionMode { void init() { } }; // { dg-error "previous definition" }
+struct KrSelectionMode { virtual void init() = 0; }; // { dg-error "" }
+struct KrKDESelectionMode : public KrSelectionMode { void init() { } }; // { dg-error "" }
+KrKDESelectionMode krKDESelectionMode;
diff --git a/gcc/testsuite/g++.dg/template/error17.C b/gcc/testsuite/g++.dg/template/error17.C
new file mode 100644
index 0000000..24b3644
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/error17.C
@@ -0,0 +1,8 @@
+// PR c++/20153
+
+template <typename T>
+void
+foo()
+{
+ union { struct { }; }; // { dg-error "" }
+}
diff --git a/gcc/testsuite/g++.dg/template/qualttp15.C b/gcc/testsuite/g++.dg/template/qualttp15.C
index 1b1f3bb..0f97c32 100644
--- a/gcc/testsuite/g++.dg/template/qualttp15.C
+++ b/gcc/testsuite/g++.dg/template/qualttp15.C
@@ -17,8 +17,8 @@ template <class T> struct X<T::template B>
T z;
};
-template <class T> struct X<T::template B>
-{ // { dg-error "redefinition" }
+template <class T> struct X<T::template B> // { dg-error "redefinition" }
+{
T z;
};
diff --git a/gcc/testsuite/g++.old-deja/g++.other/struct1.C b/gcc/testsuite/g++.old-deja/g++.other/struct1.C
index f4fa322..b1f943f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/struct1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/struct1.C
@@ -9,34 +9,34 @@
class Y
{ // { dg-error "" } previous definition
};
-class Y
-{ // { dg-error "" } redefinition
+class Y // { dg-error "" } redefinition
+{
};
template<class T> class X
{ // { dg-error "" } previous definition
};
-template<class T> class X
-{ // { dg-error "" } redefinition
+template<class T> class X // { dg-error "" } redefinition
+{
};
template<class T> class X<T *>
{ // { dg-error "" } previous definition
};
-template<class T> class X<T *>
-{ // { dg-error "" } redefinition
+template<class T> class X<T *> // { dg-error "" } redefinition
+{
};
template<> class X<int>
{ // { dg-error "" } previous definition
};
-template<> class X<int>
-{ // { dg-error "" } redefinition
+template<> class X<int> // { dg-error "" } redefinition
+{
};
template<> class X<int *>
{ // { dg-error "" } previous definition
};
-template<> class X<int *>
-{ // { dg-error "" } redefinition
+template<> class X<int *> // { dg-error "" } redefinition
+{
};