Add `set print array-indexes' tests for C/C++ arrays
[binutils-gdb.git] / gdb / m2-typeprint.c
index 8fbcdf4c603cc806b7df7d67713900ba7d61b72a..f929ab4df3ce90dfdb2f9694b6139e6ec99789d7 100644 (file)
@@ -1,5 +1,5 @@
 /* Support for printing Modula 2 types for GDB, the GNU debugger.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,7 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "bfd.h"               /* Binary File Description */
 #include "symtab.h"
 #include "gdbtypes.h"
@@ -353,8 +353,8 @@ m2_is_long_set (struct type *type)
            return 0;
          if (type->field (i).type ()->code () != TYPE_CODE_SET)
            return 0;
-         if (TYPE_FIELD_NAME (type, i) != NULL
-             && (strcmp (TYPE_FIELD_NAME (type, i), "") != 0))
+         if (type->field (i).name () != NULL
+             && (strcmp (type->field (i).name (), "") != 0))
            return 0;
          range = type->field (i).type ()->index_type ();
          if ((i > TYPE_N_BASECLASSES (type))
@@ -372,7 +372,7 @@ m2_is_long_set (struct type *type)
                            This should be integrated into gdbtypes.c
                            inside get_discrete_bounds.  */
 
-static int
+static bool
 m2_get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
 {
   type = check_typedef (type);
@@ -419,7 +419,7 @@ m2_is_long_set_of_type (struct type *type, struct type **of_type)
       l1 = type->field (i).type ()->bounds ()->low.const_val ();
       h1 = type->field (len - 1).type ()->bounds ()->high.const_val ();
       *of_type = target;
-      if (m2_get_discrete_bounds (target, &l2, &h2) >= 0)
+      if (m2_get_discrete_bounds (target, &l2, &h2))
        return (l1 == l2 && h1 == h2);
       error (_("long_set failed to find discrete bounds for its subtype"));
       return 0;
@@ -492,9 +492,9 @@ m2_is_unbounded_array (struct type *type)
        */
       if (type->num_fields () != 2)
        return 0;
-      if (strcmp (TYPE_FIELD_NAME (type, 0), "_m2_contents") != 0)
+      if (strcmp (type->field (0).name (), "_m2_contents") != 0)
        return 0;
-      if (strcmp (TYPE_FIELD_NAME (type, 1), "_m2_high") != 0)
+      if (strcmp (type->field (1).name (), "_m2_high") != 0)
        return 0;
       if (type->field (0).type ()->code () != TYPE_CODE_PTR)
        return 0;
@@ -563,7 +563,7 @@ m2_record_fields (struct type *type, struct ui_file *stream, int show,
          QUIT;
 
          print_spaces_filtered (level + 4, stream);
-         fputs_styled (TYPE_FIELD_NAME (type, i),
+         fputs_styled (type->field (i).name (),
                        variable_name_style.style (), stream);
          fputs_filtered (" : ", stream);
          m2_print_type (type->field (i).type (),
@@ -582,7 +582,7 @@ m2_record_fields (struct type *type, struct ui_file *stream, int show,
          fprintf_filtered (stream, ";\n");
        }
       
-      fprintfi_filtered (level, stream, "END ");
+      fprintf_filtered (stream, "%*sEND ", level, "");
     }
 }
 
@@ -609,13 +609,13 @@ m2_enum (struct type *type, struct ui_file *stream, int show, int level)
          if (i > 0)
            fprintf_filtered (stream, ", ");
          wrap_here ("    ");
-         fputs_styled (TYPE_FIELD_NAME (type, i),
+         fputs_styled (type->field (i).name (),
                        variable_name_style.style (), stream);
-         if (lastval != TYPE_FIELD_ENUMVAL (type, i))
+         if (lastval != type->field (i).loc_enumval ())
            {
              fprintf_filtered (stream, " = %s",
-                               plongest (TYPE_FIELD_ENUMVAL (type, i)));
-             lastval = TYPE_FIELD_ENUMVAL (type, i);
+                               plongest (type->field (i).loc_enumval ()));
+             lastval = type->field (i).loc_enumval ();
            }
          lastval++;
        }