diff options
author | Mark Mitchell <mark@codesourcery.com> | 2005-10-15 18:13:25 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2005-10-15 18:13:25 +0000 |
commit | 550d1bf420954b9e7dbf2695b6fd42b329d91604 (patch) | |
tree | 911c19a09bf32bbd85e9a71c0ab49c394c165f57 /gcc | |
parent | b27cedc6118a669f16a441f2ac287b72e7f8ccac (diff) | |
download | gcc-550d1bf420954b9e7dbf2695b6fd42b329d91604.zip gcc-550d1bf420954b9e7dbf2695b6fd42b329d91604.tar.gz gcc-550d1bf420954b9e7dbf2695b6fd42b329d91604.tar.bz2 |
re PR c++/21347 (spurious warning with -Wctor-dtor-privacy)
PR c++/21347
* class.c (maybe_warn_about_overly_private_class): Lazy
constructors are public.
PR c++/21347
* g++.dg/warn/Wctor-dtor.C: New test.
From-SVN: r105441
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/class.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wctor-dtor.C | 13 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7b2ff85..51089eb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-15 Mark Mitchell <mark@codesourcery.com> + + PR c++/21347 + * class.c (maybe_warn_about_overly_private_class): Lazy + constructors are public. + 2005-10-14 Mark Mitchell <mark@codesourcery.com> PR c++/19565 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index dc52975..b8254fe 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1537,7 +1537,10 @@ maybe_warn_about_overly_private_class (tree t) return; } - if (TYPE_HAS_CONSTRUCTOR (t)) + if (TYPE_HAS_CONSTRUCTOR (t) + /* Implicitly generated constructors are always public. */ + && (!CLASSTYPE_LAZY_DEFAULT_CTOR (t) + || !CLASSTYPE_LAZY_COPY_CTOR (t))) { int nonprivate_ctor = 0; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 04465c5c..70f1a0b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-15 Mark Mitchell <mark@codesourcery.com> + + PR c++/21347 + * g++.dg/warn/Wctor-dtor.C: New test. + 2005-10-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de> PR c/23439 diff --git a/gcc/testsuite/g++.dg/warn/Wctor-dtor.C b/gcc/testsuite/g++.dg/warn/Wctor-dtor.C new file mode 100644 index 0000000..15efb6b --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wctor-dtor.C @@ -0,0 +1,13 @@ +// PR c++/21347 +// { dg-options "-Wctor-dtor-privacy" } + +class A { +public: + int x; + int getX() { return x; } // comment out to avoid warning +}; + +int foo() { + A a; // accepted: clearly the ctor is not private + return a.x; +} |