diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2005-02-15 19:39:31 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2005-02-15 19:39:31 +0000 |
commit | e5e459bf3b9d5ff4a4cb3ae26268090ed180ae4e (patch) | |
tree | 4bdc26358fdc926dcccf0781aa23884bfcb38b20 /gcc/testsuite | |
parent | 39a87435bc42d0802f82b60bf657b3aa5ecbea86 (diff) | |
download | gcc-e5e459bf3b9d5ff4a4cb3ae26268090ed180ae4e.tar.gz |
re PR c++/17788 (poor diagnostic for missing reference initializer)
gcc/cp/ChangeLog:
PR c++/17788
* class.c (add_implicitly_declared_members, check_field_decl)
(check_field_decls, check_bases): Remove arguments, tests and
assignments of cant_have_default_ctor-related variables.
gcc/testsuite/ChangeLog:
PR c++/17788
* g++.dg/init/ctor4.C: New.
* g++.old-deja/g++.bugs/900205_04.C: Adjust.
From-SVN: r95071
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/ctor4.C | 20 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C | 12 |
3 files changed, 34 insertions, 4 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4de8e11cef1..1a66c5eddfb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-02-15 Alexandre Oliva <aoliva@redhat.com> + + PR c++/17788 + * g++.dg/init/ctor4.C: New. + * g++.old-deja/g++.bugs/900205_04.C: Adjust. + 2005-02-15 Joseph S. Myers <joseph@codesourcery.com> * gcc.dg/overflow-warn-1.c, gcc.dg/overflow-warn-2.c, diff --git a/gcc/testsuite/g++.dg/init/ctor4.C b/gcc/testsuite/g++.dg/init/ctor4.C new file mode 100644 index 00000000000..b217b204000 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/ctor4.C @@ -0,0 +1,20 @@ +// PR c++/17788 +// { dg-do compile } + +class foo { +public: + foo(); +}; + +class bar: public foo { +private: + int &a; +}; + +foo::foo() { +} + +int main(int argc, char **argv) +{ + bar x; // { dg-error "uninitialized" } +} diff --git a/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C b/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C index e5f59ab63bc..a2c84fadb9e 100644 --- a/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C +++ b/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C @@ -9,19 +9,23 @@ // keywords: default constructor, inheritance -struct struct0 { +// In ISO C++ 1998, such a derived class is not ill-formed, but if the +// implicitly-declared constructor is used, then it is implicitly +// defined and found to be ill-formed. + +struct struct0 { // { dg-error "note" } int data_member; struct0 (int, void *); // suppresses implicit default constructor }; -struct0::struct0 (int, void *) +struct0::struct0 (int, void *) // { dg-error "note" } { } -struct struct0_derived_struct_0 : public struct0 { // { dg-error "" } +struct struct0_derived_struct_0 : public struct0 { // { dg-error "" } }; -// struct0_derived_struct_0 object; // would give g++ error if compiled +struct0_derived_struct_0 object; int main () { return 0; } |