call.c (build_method_call): Issue a more helpful error message about ambiguous method...
authorMark Mitchell <mark@codesourcery.com>
Fri, 2 Aug 2002 18:53:40 +0000 (18:53 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 2 Aug 2002 18:53:40 +0000 (18:53 +0000)
* call.c (build_method_call): Issue a more helpful error message
about ambiguous method names.

From-SVN: r55994

gcc/cp/ChangeLog
gcc/cp/call.c

index 24bec89..b6db3f6 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-02  Mark Mitchell  <mark@codesourcery.com>
+
+       * call.c (build_method_call): Issue a more helpful error message
+       about ambiguous method names.
+
 2002-08-02  Nathan Sidwell  <nathan@codesourcery.com>
 
        * tree.c (build_shared_int_cst): Make cache file scope, and
index 9029a70..7b938b9 100644 (file)
@@ -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)
     {