class.c (finish_struct): Make conflicting use of id a pedwarn.
authorJason Merrill <jason@yorick.cygnus.com>
Wed, 17 Jun 1998 23:51:41 +0000 (23:51 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 17 Jun 1998 23:51:41 +0000 (19:51 -0400)
* class.c (finish_struct): Make conflicting use of id a pedwarn.
* decl.c (pushdecl_class_level): Likewise.

From-SVN: r20552

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/decl.c

index 5af8932281ee04b4916b7b5ba35c8aeaf79177cb..5218f1b7c64c42d1588a4120eaa662ca2729056d 100644 (file)
@@ -1,3 +1,8 @@
+1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * class.c (finish_struct): Make conflicting use of id a pedwarn.
+       * decl.c (pushdecl_class_level): Likewise.
+
 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
 
        * pt.c (convert_nontype_argument): Issue an error when presented
index 56c298434585ca6caa5a431f571eca034220547f..0b3e2e02b8562d3b64a484757f7dcc51fad6196c 100644 (file)
@@ -4300,7 +4300,9 @@ finish_struct (t, list_of_fieldlists, attributes, warn_anon)
              TREE_PROTECTED (DECL_RESULT (x)) = TREE_PROTECTED (x);
            }
 
-         /* Check for inconsistent use of this name in the class body.
+         /* A name N used in a class S shall refer to the same declaration
+            in its context and when re-evaluated in the completed scope of S.
+
              Enums, types and static vars have already been checked.  */
          if (TREE_CODE (x) != TYPE_DECL && TREE_CODE (x) != USING_DECL
              && ! (TREE_CODE (x) == TEMPLATE_DECL
@@ -4325,10 +4327,10 @@ finish_struct (t, list_of_fieldlists, attributes, warn_anon)
                  && !(TREE_CODE (icv) == TYPE_DECL
                       && DECL_CONTEXT (icv) == t))
                {
-                 cp_error_at ("declaration of identifier `%D' as `%+#D'",
-                              name, x);
-                 cp_error_at ("conflicts with other use in class as `%#D'",
-                              icv);
+                 cp_pedwarn_at ("declaration of identifier `%D' as `%+#D'",
+                                name, x);
+                 cp_pedwarn_at ("conflicts with other use in class as `%#D'",
+                                icv);
                }
            }
 
index 6e5b102345ae282949f3e215a16864c62110f98e..1aaa3de7e223034931fb4bdcefd92fb4e071f30f 100644 (file)
@@ -3726,7 +3726,9 @@ pushdecl_class_level (x)
     {
       if (TYPE_BEING_DEFINED (current_class_type))
        {
-         /* Check for inconsistent use of this name in the class body.
+         /* A name N used in a class S shall refer to the same declaration
+            in its context and when re-evaluated in the completed scope of S.
+
             Types, enums, and static vars are checked here; other
             members are checked in finish_struct.  */
          tree icv = IDENTIFIER_CLASS_VALUE (name);
@@ -3738,9 +3740,9 @@ pushdecl_class_level (x)
              && !(DECL_DECLARES_TYPE_P (icv)
                   && DECL_CONTEXT (icv) == current_class_type))
            {
-             cp_error ("declaration of identifier `%D' as `%#D'", name, x);
-             cp_error_at ("conflicts with previous use in class as `%#D'",
-                          icv);
+             cp_pedwarn ("declaration of identifier `%D' as `%#D'", name, x);
+             cp_pedwarn_at ("conflicts with previous use in class as `%#D'",
+                            icv);
            }
        }