On Wed, Apr 25, 2018 at 11:41:51AM -0400, David Malcolm wrote:
> @@ -1224,9 +1225,19 @@ 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;
> +
> +      tree name = DECL_NAME (field);
> +      if (name == NULL_TREE)
> +     continue;
> +
> +      /* FIXME: do we want to impose the underscore-uppercase rule, or
> +      just two underscores here?  */
> +      if (name_reserved_for_implementation_p (IDENTIFIER_POINTER (name)))
> +     continue;

This will not suggest fields that are really named __, there are tons of
such fields in many structures.
I think for lambdas it is better to make the fields DECL_NAMELESS (unless
debuginfo relies on them being emitted) and then check here DECL_NAMELESS.

        Jakub

Reply via email to