diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-03-06 21:10:38 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-03-06 21:10:38 +0000 |
commit | 0768112136c5c5e20ee580d61a2923b64995ba77 (patch) | |
tree | 91b8b18aed5b3d7bec533681eb56d52574724b65 | |
parent | 3d1df1fa6beec8f46864e4698cb5d762548998e2 (diff) | |
download | gcc-0768112136c5c5e20ee580d61a2923b64995ba77.zip gcc-0768112136c5c5e20ee580d61a2923b64995ba77.tar.gz gcc-0768112136c5c5e20ee580d61a2923b64995ba77.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wshadow-2.C | 10 |
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7d62350..94fb884 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2003-03-06 Mark Mitchell <mark@codesourcery.com> + 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 a320ef0..fb36313 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 1b7c6d3..964228f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-03-06 Mark Mitchell <mark@codesourcery.com> + 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 0000000..a3e9428 --- /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 { }; + } +}; |