decl2.c (add_function): Reorganize.

* decl2.c (add_function): Reorganize.
        (arg_assoc): Do not consider function template decls.

From-SVN: r35653
This commit is contained in:
Theodore Papadopoulo 2000-08-12 03:30:06 +02:00 committed by Jason Merrill
parent 3388651ce0
commit 9845b52bfb
3 changed files with 32 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2000-08-11 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
* decl2.c (add_function): Reorganize.
(arg_assoc): Do not consider function template decls.
2000-08-11 Jason Merrill <jason@redhat.com>
* decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're

View File

@ -4791,10 +4791,11 @@ add_function (k, fn)
case. */
/* We must find only functions, or exactly one non-function. */
if (k->functions && is_overloaded_fn (k->functions)
&& is_overloaded_fn (fn))
if (!k->functions)
k->functions = fn;
else if (is_overloaded_fn (k->functions) && is_overloaded_fn (fn))
k->functions = build_overload (fn, k->functions);
else if (k->functions)
else
{
tree f1 = OVL_CURRENT (k->functions);
tree f2 = fn;
@ -4807,8 +4808,7 @@ add_function (k, fn)
cp_error (" in call to `%D'", k->name);
return 1;
}
else
k->functions = fn;
return 0;
}
@ -5063,9 +5063,15 @@ arg_assoc (k, n)
{
my_friendly_assert (TREE_CODE (n) == OVERLOAD, 980715);
for (; n; n = OVL_CHAIN (n))
if (arg_assoc_type (k, TREE_TYPE (OVL_FUNCTION (n))))
return 1;
for (; n; n = OVL_CHAIN (n))
{
/* Do not consider function template decls during Koenig lookup. */
tree fn = OVL_FUNCTION (n);
if (!DECL_FUNCTION_TEMPLATE_P (fn)
&& arg_assoc_type (k, TREE_TYPE (fn)))
return 1;
}
}
return 0;

View File

@ -0,0 +1,13 @@
// Build don't link:
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Theodore.Papadopoulo 23 Jun 2000 <Theodore.Papadopoulo@sophia.inria.fr>
#include <algorithm>
void foo(const char*,...);
inline void
bar() {
foo("",count); // ERROR - multiple overloaded count functions
}