* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51438
138bc75d-0d04-0410-961f-
82ee72b054a4
+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:
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);
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;
}