diff options
author | Mark Mitchell <mark@markmitchell.com> | 1998-10-15 11:36:46 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1998-10-15 11:36:46 +0000 |
commit | ce0a595295f77ae947106256dbc823f936d17fb6 (patch) | |
tree | b76ba88ce248b5fbcea82611ba0be83c62918771 | |
parent | 45869a6cab14c0904d21a0a6699dee73d9cbbe4b (diff) | |
download | gcc-ce0a595295f77ae947106256dbc823f936d17fb6.zip gcc-ce0a595295f77ae947106256dbc823f936d17fb6.tar.gz gcc-ce0a595295f77ae947106256dbc823f936d17fb6.tar.bz2 |
class.c (maybe_warn_about_overly_private_class): Improve error messages for class with only private constructors.
* class.c (maybe_warn_about_overly_private_class): Improve error
messages for class with only private constructors.
From-SVN: r23111
-rw-r--r-- | gcc/cp/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/cp/class.c | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b98eb82..6b6ed2c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,15 @@ +1998-10-15 Mark Mitchell <mark@markmitchell.com> + + * class.c (maybe_warn_about_overly_private_class): Improve error + messages for class with only private constructors. + + * cp-tree.def (TYPENAME_TYPE): Add to documentation. + * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document. + (build_typename_type): New function. + * decl.c (build_typename_type): Broken out from ... + (make_typename_type): Use it. + * search.c (lookup_field): Likewise. + 1998-10-14 Benjamin Kosnik <bkoz@rhino.cygnus.com> * pt.c (convert_nontype_argument): Check against type_referred_to. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index cd16b59..d440e7c 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -2013,12 +2013,18 @@ maybe_warn_about_overly_private_class (t) has_nonprivate_method = 1; break; } - else + else if (!DECL_CONSTRUCTOR_P (fn) && !DECL_DESTRUCTOR_P (fn)) has_member_fn = 1; } if (!has_nonprivate_method && has_member_fn) { + /* There are no non-private methods, and there's at least one + private member function that isn't a constructor or + destructor. (If all the private members are + constructors/destructors we want to use the code below that + issues error messages specifically referring to + constructors/destructors.) */ int i; tree binfos = BINFO_BASETYPES (TYPE_BINFO (t)); for (i = 0; i < CLASSTYPE_N_BASECLASSES (t); i++) |