diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 0ecfd8f8098..8252aadedde 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,11 @@ +2005-09-05 Ranjit Mathew + + PR java/23431 + * typeck.c (lookup_do): Look up interfaces for the original class, + not the base class. + * parse.y (java_check_regular_methods): Fix diagnostic message for + more restrictive overriding of a method from an interface. + 2005-08-16 Tom Tromey * class.c (make_class_data): Always emit JV_STATE_PRELOADING for diff --git a/gcc/java/parse.y b/gcc/java/parse.y index b1de35fc7f0..9dd860d51aa 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -6518,7 +6518,7 @@ java_check_regular_methods (tree class_decl) tree found_decl = TYPE_NAME (DECL_CONTEXT (found)); parse_error_context (method_wfl, "Class %qs must override %qs with a public method in order to implement interface %qs", IDENTIFIER_POINTER (DECL_NAME (class_decl)), - lang_printable_name (method, 2), + lang_printable_name (found, 0), IDENTIFIER_POINTER (DECL_NAME (found_decl))); } diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c index 8616d0b82f6..8b64ac82c5a 100644 --- a/gcc/java/typeck.c +++ b/gcc/java/typeck.c @@ -842,6 +842,7 @@ lookup_do (tree searched_class, int flags, tree method_name, tree signature, tree (*signature_builder) (tree)) { tree method; + tree orig_class = searched_class; if (searched_class == NULL_TREE) return NULL_TREE; @@ -868,7 +869,7 @@ lookup_do (tree searched_class, int flags, tree method_name, /* If that doesn't work, look in our interfaces. */ if (flags & SEARCH_INTERFACE) - method = find_method_in_interfaces (searched_class, flags, method_name, + method = find_method_in_interfaces (orig_class, flags, method_name, signature, signature_builder); return method;