summaryrefslogtreecommitdiff
path: root/gcc/cp/search.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2018-04-27 18:39:18 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2018-04-27 18:39:18 +0000
commit66bd30863fe5673f902fa64a1af0a47f4911fdd2 (patch)
tree9d4bfe51102d1732770424d8fbdd728fd7a1b380 /gcc/cp/search.c
parent2885a4939a7c96441210d6b3507524b6970d1013 (diff)
downloadgcc-66bd30863fe5673f902fa64a1af0a47f4911fdd2.tar.gz
Don't offer suggestions for compiler-generated variables (PR c++/85515)
gcc/cp/ChangeLog: PR c++/85515 * name-lookup.c (consider_binding_level): Skip compiler-generated variables. * search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Flatten nested if statements into a series of rejection tests. Reject lambda-ignored entities as suggestions. gcc/testsuite/ChangeLog: PR c++/85515 * g++.dg/pr85515-1.C: New test. * g++.dg/pr85515-2.C: New test. From-SVN: r259720
Diffstat (limited to 'gcc/cp/search.c')
-rw-r--r--gcc/cp/search.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index bfeaf2cc819..22c0492f535 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -1224,9 +1224,16 @@ lookup_field_fuzzy_info::fuzzy_lookup_field (tree type)
for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
{
- if (!m_want_type_p || DECL_DECLARES_TYPE_P (field))
- if (DECL_NAME (field))
- m_candidates.safe_push (DECL_NAME (field));
+ if (m_want_type_p && !DECL_DECLARES_TYPE_P (field))
+ continue;
+
+ if (!DECL_NAME (field))
+ continue;
+
+ if (is_lambda_ignored_entity (field))
+ continue;
+
+ m_candidates.safe_push (DECL_NAME (field));
}
}