aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2009-03-23 20:32:53 +0000
committerJason Merrill <jason@redhat.com>2009-03-23 20:32:53 +0000
commit60c26fa95fa2d2ddaa375658659c7c59ab3fe8b9 (patch)
treed0ffb49a574047022ca761c0103ed0269efb5753
parent47863663eca5fd9a2a9a3fe9c1c0d2c463883342 (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/ChangeLog6
-rw-r--r--gcc/cp/name-lookup.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Wshadow-4.C20
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;
+}