]> gcc.gnu.org Git - gcc.git/commitdiff
typeck.c (build_component_ref): Remove unused statement.
authorJason Merrill <jason@gcc.gnu.org>
Tue, 24 Nov 1998 17:56:27 +0000 (12:56 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 24 Nov 1998 17:56:27 +0000 (12:56 -0500)
* typeck.c (build_component_ref): Remove unused statement.
* class.c (add_method): Catch invalid overloads.
Fixes Sec13/1/E13097.C.

From-SVN: r23833

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/typeck.c

index 92fed9792e49ee2b7bb5aa016f71d2bbe5905bf2..07ebc11833cb1d3eaaddbd4e77279d9f9beda3eb 100644 (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.
index de283eae2ddea8c5b6b35cbc6983e796f07a75e5..8c098f03d2feaade1c36682cefb928249fe570e7 100644 (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
index e944eee978f0983d451d74e15fe69d23d965f7b2..18160be66373503c675156556297390d0e4e42d3 100644 (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;
This page took 0.084228 seconds and 5 git commands to generate.