This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] (Ada) Cleanup code by using ada_is_access_to_unconstrained_array call.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d91e9ea81dce83259f2a7f32f43876373f3e7981

commit d91e9ea81dce83259f2a7f32f43876373f3e7981
Author: Xavier Roirand <roirand@adacore.com>
Date:   Mon Sep 10 10:35:58 2018 -0500

    (Ada) Cleanup code by using ada_is_access_to_unconstrained_array call.
    
    This patch just avoids code duplication by using a function we
    introduced recently (ada_is_access_to_unconstrained_array).
    
    gdb/ChangeLog:
    
        * ada-lang.c (ada_is_access_to_unconstrained_array): Remove static
        declaration.
        * ada-lang.h: add ada_is_access_to_unconstrained_array prototype.
        * ada-varobj.c (ada_varobj_get_number_of_children,
        ada_varobj_describe_child, ada_value_is_changeable_p): Cleanup code.
    
    Tested on x86_64-linux.
    No new testcase provided, as this is just a refactoring.

Diff:
---
 gdb/ChangeLog    | 8 ++++++++
 gdb/ada-lang.c   | 2 +-
 gdb/ada-lang.h   | 2 ++
 gdb/ada-varobj.c | 9 +++------
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 524d218..0c94ad4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
 2018-09-10  Xavier Roirand  <roirand@adacore.com>
 
+	* ada-lang.c (ada_is_access_to_unconstrained_array): Remove static
+	declaration.
+	* ada-lang.h: add ada_is_access_to_unconstrained_array prototype.
+	* ada-varobj.c (ada_varobj_get_number_of_children,
+	ada_varobj_describe_child, ada_value_is_changeable_p): Cleanup code.
+
+2018-09-10  Xavier Roirand  <roirand@adacore.com>
+
 	* ada-valprint.c (ada_value_print): Use type instead of
 	enclosing type.
 
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 5f39def..d151dde 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -2834,7 +2834,7 @@ value_assign_to_component (struct value *container, struct value *component,
 
 /* Determine if TYPE is an access to an unconstrained array.  */
 
-static bool
+bool
 ada_is_access_to_unconstrained_array (struct type *type)
 {
   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 90bfa0a..ee5394c 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -194,6 +194,8 @@ extern void ada_printstr (struct ui_file *, struct type *, const gdb_byte *,
 struct value *ada_convert_actual (struct value *actual,
                                   struct type *formal_type0);
 
+extern bool ada_is_access_to_unconstrained_array (struct type *type);
+
 extern struct value *ada_value_subscript (struct value *, int,
                                           struct value **);
 
diff --git a/gdb/ada-varobj.c b/gdb/ada-varobj.c
index 5baefd9..8a01cb9 100644
--- a/gdb/ada-varobj.c
+++ b/gdb/ada-varobj.c
@@ -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)
@@ -680,8 +679,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 +935,7 @@ 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 (ada_is_access_to_unconstrained_array (type))
     {
       /* This is in reality a pointer to an unconstrained array.
 	 its value is changeable.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]