From: Martin v. Löwis Date: Tue, 14 Jul 1998 23:37:49 +0000 (+0000) Subject: decl2.c (add_function): Move error message ... X-Git-Tag: prereleases/egcs-1.1-prerelease~244 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75f909ba8e012f033fe2a69595472ffae77096d6;p=thirdparty%2Fgcc.git decl2.c (add_function): Move error message ... * decl2.c (add_function): Move error message ... (arg_assoc_namespace): ... from here. From-SVN: r21168 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fd4f2762a842..bb86ebaca022 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1998-07-14 Martin von Löwis + + * decl2.c (add_function): Move error message ... + (arg_assoc_namespace): ... from here. + 1998-07-14 Jason Merrill * parse.y (namespace_qualifier): Fix multiple level handling. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b2d28012fbee..1a88ef7899f8 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4149,7 +4149,26 @@ add_function (k, fn) { if (ovl_member (fn, k->functions)) return 0; - k->functions = build_overload (fn, k->functions); + /* We must find only functions, or exactly one non-function. */ + if (k->functions && is_overloaded_fn (k->functions) + && is_overloaded_fn (fn)) + k->functions = build_overload (fn, k->functions); + else + if(k->functions) + { + tree f1 = OVL_CURRENT (k->functions); + tree f2 = fn; + if (is_overloaded_fn (f1)) + { + fn = f1; f1 = f2; f2 = fn; + } + cp_error_at ("`%D' is not a function,", f1); + cp_error_at (" conflict with `%D'", f2); + cp_error (" in call to `%D'", k->name); + return 1; + } + else + k->functions = fn; return 0; } @@ -4170,13 +4189,6 @@ arg_assoc_namespace (k, scope) if (!value) return 0; - if (!is_overloaded_fn (value)) - { - cp_error_at ("`%D' is not a function", value); - cp_error ("in call to `%D'", k->name); - return 1; - } - for (; value; value = OVL_NEXT (value)) if (add_function (k, OVL_CURRENT (value))) return 1;