diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-03-15 18:45:01 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-03-15 18:45:01 +0100 |
commit | 4a5a49b034eed5373f6968c99bda1827f1479580 (patch) | |
tree | 64ed6c965d42cd863935b6a8afd5a6cb716764fe /gcc/cp/tree.c | |
parent | 8bb2726d08ae3dd89c7085a7972b5a144ccea270 (diff) | |
download | gcc-4a5a49b034eed5373f6968c99bda1827f1479580.zip gcc-4a5a49b034eed5373f6968c99bda1827f1479580.tar.gz gcc-4a5a49b034eed5373f6968c99bda1827f1479580.tar.bz2 |
re PR c++/84222 ([[deprecated]] class complains about internal class usage)
PR c++/84222
* cp-tree.h (cp_warn_deprecated_use): Declare.
* tree.c (cp_warn_deprecated_use): New function.
* typeck2.c (build_functional_cast): Use it.
* decl.c (grokparms): Likewise.
(grokdeclarator): Likewise. Temporarily push nested class scope
around grokparms call for out of class member definitions.
* g++.dg/warn/deprecated.C (T::member3): Change dg-warning to dg-bogus.
* g++.dg/warn/deprecated-6.C (T::member3): Likewise.
* g++.dg/warn/deprecated-13.C: New test.
From-SVN: r258568
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 4cf2126..c2299ba 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -5347,6 +5347,19 @@ cp_tree_code_length (enum tree_code code) } } +/* Wrapper around warn_deprecated_use that doesn't warn for + current_class_type. */ + +void +cp_warn_deprecated_use (tree node) +{ + if (TYPE_P (node) + && current_class_type + && TYPE_MAIN_VARIANT (node) == current_class_type) + return; + warn_deprecated_use (node, NULL_TREE); +} + /* Implement -Wzero_as_null_pointer_constant. Return true if the conditions for the warning hold, false otherwise. */ bool |