diff options
author | Martin v. Löwis <loewis@informatik.hu-berlin.de> | 1998-07-14 23:34:17 +0000 |
---|---|---|
committer | Martin v. Löwis <loewis@gcc.gnu.org> | 1998-07-14 23:34:17 +0000 |
commit | 5f8ac7d1bb0c7df9fd8fd4d843ebe79a0767ccda (patch) | |
tree | 43d707b0793402b201c1b995982c0da3a882c414 | |
parent | 95b3fb4181d1ad40cfb9b0eae5b8971b5489a557 (diff) | |
download | gcc-5f8ac7d1bb0c7df9fd8fd4d843ebe79a0767ccda.zip gcc-5f8ac7d1bb0c7df9fd8fd4d843ebe79a0767ccda.tar.gz gcc-5f8ac7d1bb0c7df9fd8fd4d843ebe79a0767ccda.tar.bz2 |
decl2.c (add_function): Move error message ...
* decl2.c (add_function): Move error message ...
(arg_assoc_namespace): ... from here.
From-SVN: r21167
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 28 |
2 files changed, 25 insertions, 8 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0563509..07e6b27 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de> + + * decl2.c (add_function): Move error message ... + (arg_assoc_namespace): ... from here. + 1998-07-14 Jason Merrill <jason@yorick.cygnus.com> * parse.y (namespace_qualifier): Fix multiple level handling. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index b2d2801..1a88ef7 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; |