diff options
author | Mark Mitchell <mark@codesourcery.com> | 2005-02-23 05:30:48 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2005-02-23 05:30:48 +0000 |
commit | 744b12b65f6923a713593f404f97384c6093dd94 (patch) | |
tree | b003a007ec3edf4d8323134ca4e5d3a88c20f95d /gcc/testsuite | |
parent | 90c1d75a9bb8e25aa963da02f9c91f5f40143be1 (diff) | |
download | gcc-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/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/constant7.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/error26.C | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/error27.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/error17.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/qualttp15.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/struct1.C | 20 |
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 +{ }; |