Fix indentation (and clang warning) in c-lang.c
[deliverable/binutils-gdb.git] / gdb / ada-varobj.c
index 5baefd997b340066d780448557990bbdda43264d..1a5d0ac2393909cb084cb5bef82292c0fe8ebab9 100644 (file)
@@ -1,6 +1,6 @@
 /* varobj support for Ada.
 
-   Copyright (C) 2012-2018 Free Software Foundation, Inc.
+   Copyright (C) 2012-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -350,8 +350,7 @@ ada_varobj_get_number_of_children (struct value *parent_value,
   /* A typedef to an array descriptor in fact represents a pointer
      to an unconstrained array.  These types always have one child
      (the unconstrained array).  */
-  if (ada_is_array_descriptor_type (parent_type)
-      && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
+  if (ada_is_access_to_unconstrained_array (parent_type))
     return 1;
 
   if (TYPE_CODE (parent_type) == TYPE_CODE_ARRAY)
@@ -625,6 +624,7 @@ ada_varobj_describe_simple_array_child (struct value *parent_value,
         of the array index type when such type qualification is
         needed.  */
       const char *index_type_name = NULL;
+      std::string decoded;
 
       /* If the index type is a range type, find the base type.  */
       while (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
@@ -635,7 +635,10 @@ ada_varobj_describe_simple_array_child (struct value *parent_value,
        {
          index_type_name = ada_type_name (index_type);
          if (index_type_name)
-           index_type_name = ada_decode (index_type_name);
+           {
+             decoded = ada_decode (index_type_name);
+             index_type_name = decoded.c_str ();
+           }
        }
 
       if (index_type_name != NULL)
@@ -680,8 +683,7 @@ ada_varobj_describe_child (struct value *parent_value,
   if (child_path_expr)
     *child_path_expr = std::string ();
 
-  if (ada_is_array_descriptor_type (parent_type)
-      && TYPE_CODE (parent_type) == TYPE_CODE_TYPEDEF)
+  if (ada_is_access_to_unconstrained_array (parent_type))
     {
       ada_varobj_describe_ptr_child (parent_value, parent_type,
                                     parent_name, parent_path_expr,
@@ -937,8 +939,10 @@ ada_value_is_changeable_p (const struct varobj *var)
   struct type *type = (var->value != nullptr
                       ? value_type (var->value.get ()) : var->type);
 
-  if (ada_is_array_descriptor_type (type)
-      && TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
+  if (TYPE_CODE (type) == TYPE_CODE_REF)
+    type = TYPE_TARGET_TYPE (type);
+
+  if (ada_is_access_to_unconstrained_array (type))
     {
       /* This is in reality a pointer to an unconstrained array.
         its value is changeable.  */
This page took 0.027281 seconds and 4 git commands to generate.