nval = dep_using;
}
- /* If there is no declaration with the indicated name in this type,
- then there's nothing to do. */
- if (!nval)
- goto done;
-
/* If we're looking up a type (as with an elaborated type specifier)
we ignore all non-types we find. */
- if (lfi->want_type && !DECL_DECLARES_TYPE_P (nval))
+ if (lfi->want_type && nval && !DECL_DECLARES_TYPE_P (nval))
{
- if (lfi->name == TYPE_IDENTIFIER (type))
- {
- /* If the aggregate has no user defined constructors, we allow
- it to have fields with the same name as the enclosing type.
- If we are looking for that name, find the corresponding
- TYPE_DECL. */
- for (nval = TREE_CHAIN (nval); nval; nval = TREE_CHAIN (nval))
- if (DECL_NAME (nval) == lfi->name
- && TREE_CODE (nval) == TYPE_DECL)
- break;
- }
- else
- nval = NULL_TREE;
- if (!nval && CLASSTYPE_NESTED_UTDS (type) != NULL)
- {
- binding_entry e = binding_table_find (CLASSTYPE_NESTED_UTDS (type),
- lfi->name);
- if (e != NULL)
- nval = TYPE_MAIN_DECL (e->type);
- else
- goto done;
- }
+ nval = NULL_TREE;
+ if (CLASSTYPE_NESTED_UTDS (type))
+ if (binding_entry e = binding_table_find (CLASSTYPE_NESTED_UTDS (type),
+ lfi->name))
+ nval = TYPE_MAIN_DECL (e->type);
}
+ /* If there is no declaration with the indicated name in this type,
+ then there's nothing to do. */
+ if (!nval)
+ goto done;
+
/* If the lookup already found a match, and the new value doesn't
hide the old one, we might have an ambiguity. */
if (lfi->rval_binfo