From 0768112136c5c5e20ee580d61a2923b64995ba77 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 6 Mar 2003 21:10:38 +0000 Subject: [PATCH] re PR c++/9400 (Warning -Wshadow warns of shadowed declaration of THIS in local classes.) PR c++/9400 * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL PARM_DECLs. PR c++/9400 * g++.dg/warn/Wshadow-2.C: New test. From-SVN: r63904 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/decl.c | 4 +++- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/g++.dg/warn/Wshadow-2.C | 10 ++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/warn/Wshadow-2.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7d62350a0a4..94fb8840fcb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2003-03-06 Mark Mitchell + PR c++/9400 + * decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL + PARM_DECLs. + PR c++/9791 * class.c (get_basefndecls): Use lookup_fnfields_1. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a320ef0615c..fb3631329e2 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4101,7 +4101,9 @@ pushdecl (tree x) if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x) /* Inline decls shadow nothing. */ && !DECL_FROM_INLINE (x) - && TREE_CODE (oldlocal) == PARM_DECL) + && TREE_CODE (oldlocal) == PARM_DECL + /* Don't check the `this' parameter. */ + && !DECL_ARTIFICIAL (oldlocal)) { bool err = false; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1b7c6d38bb6..964228f7d55 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-03-06 Mark Mitchell + PR c++/9400 + * g++.dg/warn/Wshadow-2.C: New test. + PR c++/9791 * g++.dg/warn/Woverloaded-1.C: New test. diff --git a/gcc/testsuite/g++.dg/warn/Wshadow-2.C b/gcc/testsuite/g++.dg/warn/Wshadow-2.C new file mode 100644 index 00000000000..a3e9428b684 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wshadow-2.C @@ -0,0 +1,10 @@ +/* { dg-options "-Wshadow" } */ + +struct A { + void a1 () { + struct B { B() {} }; // There should be no warning here. + } + void a2 () { + struct B { }; + } +}; -- 2.30.2