diff options
author | Jason Merrill <jason@redhat.com> | 2009-03-23 20:32:53 +0000 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2009-03-23 20:32:53 +0000 |
commit | 60c26fa95fa2d2ddaa375658659c7c59ab3fe8b9 (patch) | |
tree | d0ffb49a574047022ca761c0103ed0269efb5753 | |
parent | 47863663eca5fd9a2a9a3fe9c1c0d2c463883342 (diff) |
PR c++/39526
* name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
a parm with a parm.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@145012 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wshadow-4.C | 20 |
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e695ede3f2d..77c195a56c8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2009-03-23 Jason Merrill <jason@redhat.com> + + PR c++/39526 + * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing + a parm with a parm. + 2009-03-20 Jason Merrill <jason@redhat.com> PR c++/28879 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 308df8c9c17..6424569d728 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1031,7 +1031,10 @@ pushdecl_maybe_friend (tree x, bool is_friend) } } - if (warn_shadow && !err) + if (warn_shadow && !err + /* Don't complain about the parms we push and then pop + while tentatively parsing a function declarator. */ + && !(TREE_CODE (x) == PARM_DECL && DECL_CONTEXT (x) == NULL_TREE)) { warning (OPT_Wshadow, "declaration of %q#D shadows a parameter", x); warning (OPT_Wshadow, "%Jshadowed declaration is here", oldlocal); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 65f77602a8b..16a2c5478df 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-03-23 Jason Merrill <jason@redhat.com> + + PR c++/39526 + * g++.dg/warn/Wshadow-4.C: New test. + 2009-03-23 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/39516 diff --git a/gcc/testsuite/g++.dg/warn/Wshadow-4.C b/gcc/testsuite/g++.dg/warn/Wshadow-4.C new file mode 100644 index 00000000000..16399b2fb60 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wshadow-4.C @@ -0,0 +1,20 @@ +// PR c++/39526 +// { dg-options "-Wshadow" } + +class INetURLObject +{ +public: + INetURLObject(int i); + int GetMainURL() const; +}; + +int foo(int infoo) // { dg-warning "shadowed declaration" } +{ + int outfoo( INetURLObject( infoo ).GetMainURL()); // { dg-bogus "shadows" } + extern void f(int infoo); + struct A + { + void f(int infoo) { } // { dg-warning "shadows a parameter" } + }; + return outfoo; +} |