re PR java/5850 (resolving inherited member variables with same name works poorly)
Fix for PR java/5850: * parse.y (lookup_field_wrapper): Call itself recursively for enclosing context if field was not found in the current scope. * expr.c (lookup_field): Don't look in enclosing contexts. From-SVN: r51438
This commit is contained in:
parent
473aef78b4
commit
058330951d
|
@ -1,3 +1,10 @@
|
|||
2002-03-27 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
|
||||
|
||||
Fix for PR java/5850:
|
||||
* parse.y (lookup_field_wrapper): Call itself recursively for enclosing
|
||||
context if field was not found in the current scope.
|
||||
* expr.c (lookup_field): Don't look in enclosing contexts.
|
||||
|
||||
2002-03-26 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
Fix for PR java/5942:
|
||||
|
|
|
@ -1517,16 +1517,6 @@ lookup_field (typep, name)
|
|||
if (DECL_NAME (field) == name)
|
||||
return field;
|
||||
|
||||
/* If *typep is an innerclass, lookup the field in its enclosing
|
||||
contexts */
|
||||
if (INNER_CLASS_TYPE_P (*typep))
|
||||
{
|
||||
tree outer_type = TREE_TYPE (DECL_CONTEXT (TYPE_NAME (*typep)));
|
||||
|
||||
if ((field = lookup_field (&outer_type, name)))
|
||||
return field;
|
||||
}
|
||||
|
||||
/* Process implemented interfaces. */
|
||||
basetype_vec = TYPE_BINFO_BASETYPES (*typep);
|
||||
n = TREE_VEC_LENGTH (basetype_vec);
|
||||
|
|
|
@ -4209,6 +4209,13 @@ lookup_field_wrapper (class, name)
|
|||
decl = lookup_field (&type, name);
|
||||
}
|
||||
|
||||
/* If the field still hasn't been found, try the next enclosing context. */
|
||||
if (!decl && INNER_CLASS_TYPE_P (class))
|
||||
{
|
||||
tree outer_type = TREE_TYPE (DECL_CONTEXT (TYPE_NAME (class)));
|
||||
decl = lookup_field_wrapper (outer_type, name);
|
||||
}
|
||||
|
||||
java_parser_context_restore_global ();
|
||||
return decl == error_mark_node ? NULL : decl;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue