diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 24bec896b35..b6db3f6106b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-08-02 Mark Mitchell + + * call.c (build_method_call): Issue a more helpful error message + about ambiguous method names. + 2002-08-02 Nathan Sidwell * tree.c (build_shared_int_cst): Make cache file scope, and diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 9029a7072dc..7b938b92976 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -545,11 +545,17 @@ build_method_call (instance, name, parms, basetype_path, flags) else if (DECL_P (name)) name = DECL_NAME (name); if (has_template_args) - fn = lookup_fnfields (object_type, name, /*protect=*/0); + fn = lookup_fnfields (object_type, name, /*protect=*/2); else - fn = lookup_member (object_type, name, /*protect=*/0, - /*want_type=*/0); + fn = lookup_member (object_type, name, /*protect=*/2, /*want_type=*/0); + if (fn && TREE_CODE (fn) == TREE_LIST && !BASELINK_P (fn)) + { + error ("request for member `%D' is ambiguos", name); + print_candidates (fn); + return error_mark_node; + } + /* If the name could not be found, issue an error. */ if (!fn) {