typeck.c (build_component_ref): Remove unused statement.

* typeck.c (build_component_ref): Remove unused statement.
	* class.c (add_method): Catch invalid overloads.
Fixes Sec13/1/E13097.C.

From-SVN: r23833
This commit is contained in:
Jason Merrill 1998-11-24 12:56:27 -05:00
parent 818347b4d6
commit 333a9f0aaf
3 changed files with 27 additions and 4 deletions

View File

@ -1,5 +1,11 @@
1998-11-24 Graham <grahams@rcp.co.uk>
* typeck.c (build_component_ref): Remove unused statement.
1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
* class.c (add_method): Catch invalid overloads.
* class.c (add_method): Build up OVERLOADs properly for conversion ops.
* search.c (lookup_conversions): Handle getting real OVERLOADs.
(add_conversions): Likewise. Revert last change.

View File

@ -1208,6 +1208,26 @@ add_method (type, fields, method)
if (TREE_CODE (method) != TEMPLATE_DECL)
{
/* [over.load] Member function declarations with the
same name and the same parameter types cannot be
overloaded if any of them is a static member
function declaration. */
if (DECL_STATIC_FUNCTION_P (fn)
!= DECL_STATIC_FUNCTION_P (method))
{
tree parms1 = TYPE_ARG_TYPES (TREE_TYPE (fn));
tree parms2 = TYPE_ARG_TYPES (TREE_TYPE (method));
if (! DECL_STATIC_FUNCTION_P (fn))
parms1 = TREE_CHAIN (parms1);
else
parms2 = TREE_CHAIN (parms2);
if (compparms (parms1, parms2))
cp_error ("`%#D' and `%#D' cannot be overloaded",
fn, method);
}
/* Since this is an ordinary function in a
non-template class, it's mangled name can be
used as a unique identifier. This technique

View File

@ -2059,10 +2059,7 @@ build_component_ref (datum, component, basetype_path, protect)
&& TREE_CODE (TREE_VALUE (fndecls)) == FUNCTION_DECL
&& DECL_STATIC_FUNCTION_P (TREE_VALUE (fndecls)))
{
tree fndecl;
basetype = TYPE_MAIN_VARIANT (TREE_PURPOSE (fndecls));
fndecl = TREE_VALUE (fndecls);
tree fndecl = TREE_VALUE (fndecls);
enforce_access (TREE_PURPOSE (fndecls), fndecl);
mark_used (fndecl);
return fndecl;