From c561e95201474d7951cbd7a09195b7f3b412d1e9 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 28 Mar 2013 14:20:37 -0400 Subject: [PATCH] name-lookup.c (pushdecl_maybe_friend_1): Use nonlambda_method_basetype and current_nonlambda_class_type. * name-lookup.c (pushdecl_maybe_friend_1): Use nonlambda_method_basetype and current_nonlambda_class_type. From-SVN: r197210 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/name-lookup.c | 4 ++-- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C | 10 ++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 164c79700ca..b20415391f7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2013-03-28 Jason Merrill + * name-lookup.c (pushdecl_maybe_friend_1): Use + nonlambda_method_basetype and current_nonlambda_class_type. + PR c++/56728 * semantics.c (potential_constant_expression_1) [NOP_EXPR]: Reject conversion from integer to pointer. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 0a0915af8a9..e2ef75bac23 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1163,8 +1163,8 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend) { tree member; - if (current_class_ptr) - member = lookup_member (current_class_type, + if (nonlambda_method_basetype ()) + member = lookup_member (current_nonlambda_class_type (), name, /*protect=*/0, /*want_type=*/false, diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C new file mode 100644 index 00000000000..8237a8178c1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow2.C @@ -0,0 +1,10 @@ +// { dg-options "-std=c++11 -Wshadow" } + +struct A +{ + int i; + void f() + { + [=]{ int i; }; // { dg-warning "shadows" } + } +};