aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-03-15 18:45:01 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-03-15 18:45:01 +0100
commit4a5a49b034eed5373f6968c99bda1827f1479580 (patch)
tree64ed6c965d42cd863935b6a8afd5a6cb716764fe /gcc/cp/tree.c
parent8bb2726d08ae3dd89c7085a7972b5a144ccea270 (diff)
downloadgcc-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.c13
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