aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@markmitchell.com>1998-10-15 11:36:46 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1998-10-15 11:36:46 +0000
commitce0a595295f77ae947106256dbc823f936d17fb6 (patch)
treeb76ba88ce248b5fbcea82611ba0be83c62918771
parent45869a6cab14c0904d21a0a6699dee73d9cbbe4b (diff)
downloadgcc-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/ChangeLog12
-rw-r--r--gcc/cp/class.c8
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++)