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:
parent
818347b4d6
commit
333a9f0aaf
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user