diff options
author | David Malcolm <dmalcolm@redhat.com> | 2018-04-27 18:39:18 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2018-04-27 18:39:18 +0000 |
commit | 66bd30863fe5673f902fa64a1af0a47f4911fdd2 (patch) | |
tree | 9d4bfe51102d1732770424d8fbdd728fd7a1b380 /gcc/cp/search.c | |
parent | 2885a4939a7c96441210d6b3507524b6970d1013 (diff) | |
download | gcc-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.c | 13 |
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)); } } |