error.c (dump_decl): operator new, not operatornew.
authorJason Merrill <jason@gcc.gnu.org>
Thu, 6 Jan 2000 23:54:34 +0000 (18:54 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 6 Jan 2000 23:54:34 +0000 (18:54 -0500)
        * error.c (dump_decl): operator new, not operatornew.

        * class.c (field_decl_cmp): A nontype is "greater" than a type.
        * search.c (lookup_field_1): Look for the last field with the
        desired name.

From-SVN: r31262

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/error.c
gcc/cp/search.c

index 62a5d70c45381f6376b401cae5e88555527e9712..c3a9a97c56bcd383cc29d4a88e623f111472d7bd 100644 (file)
@@ -1,3 +1,11 @@
+2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
+
+       * error.c (dump_decl): operator new, not operatornew.
+
+       * class.c (field_decl_cmp): A nontype is "greater" than a type.
+       * search.c (lookup_field_1): Look for the last field with the
+       desired name.
+
 2000-01-05  Nathan Sidwell  <nathan@acm.org>
 
        * decl2.c (lookup_arg_dependent): Deal with FNS not being a
        (avoid_overlap): Moved here from tree.c.
        (build_base_fields): Likewise.
        (check_bases): New function, split out from finish_base_struct.
-       (check_bases_and_members): New function, split out from finish_struct_1.
+       (check_bases_and_members): New function, split out from 
+       finish_struct_1.
        (struct base_info): Remove cant_have_default_ctor,
        cant_have_const_ctor, cant_have_asn_ref.
        (finish_base_struct): Split semantic analysis into check_bases.
index c2ff295be0d330856adde000de1f024d6605837e..89d687703a4808f35361654231cba4ab5d9fe6a7 100644 (file)
@@ -1946,7 +1946,8 @@ field_decl_cmp (x, y)
      const tree *x, *y;
 {
   if (DECL_NAME (*x) == DECL_NAME (*y))
-    return 0;
+    /* A nontype is "greater" than a type.  */
+    return DECL_DECLARES_TYPE_P (*y) - DECL_DECLARES_TYPE_P (*x);
   if (DECL_NAME (*x) == NULL_TREE)
     return -1;
   if (DECL_NAME (*y) == NULL_TREE)
index 46ac51b349c9abc6fb73cb207dd2507dd411078f..f76b4da772ca0d2aeac29fd9f21264a509b5d20d 100644 (file)
@@ -951,6 +951,8 @@ dump_decl (t, flags)
          {
            const char *name_string = operator_name_string (t);
            OB_PUTS ("operator");
+           if (ISALPHA (name_string[0]))
+             OB_PUTC (' ');
            OB_PUTCP (name_string);
          }
        else
@@ -1282,6 +1284,8 @@ dump_function_name (t, flags)
     {
       const char *name_string = operator_name_string (name);
       OB_PUTS ("operator");
+      if (ISALPHA (name_string[0]))
+       OB_PUTC (' ');
       OB_PUTCP (name_string);
     }
   else
index 28ef1a17ac2090f38e1e3a3782eba98005abedfc..c5ec089c1ee9c0b9da39778f2742483243e486f6 100644 (file)
@@ -611,7 +611,16 @@ lookup_field_1 (type, name)
          else if (DECL_NAME (fields[i]) < name)
            lo = i + 1;
          else
-           return fields[i];
+           {
+             /* We might have a nested class and a field with the
+                same name; we sorted them appropriately via
+                field_decl_cmp, so just look for the last field with
+                this name.  */
+             while (i + 1 < hi
+                    && DECL_NAME (fields[i+1]) == name)
+               ++i;
+             return fields[i];
+           }
        }
       return NULL_TREE;
     }