gdb/fortran: Update rules for printing whitespace in types
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 17 Feb 2019 00:37:20 +0000 (00:37 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 30 Apr 2019 09:36:56 +0000 (10:36 +0100)
The whitespace produced as types are printed seems inconsistent.  This
commit updates the rules in an attempt to make whitespace more
balanced and consistent.  Expected results are updated.

gdb/ChangeLog:

* f-typeprint.c (f_print_type): Update rules for printing
whitespace.
(f_type_print_varspec_suffix): Likewise.

gdb/testsuite/ChangeLog:

* gdb.fortran/ptr-indentation.exp: Update expected results.
* gdb.fortran/ptype-on-functions.exp: Likewise.
* gdb.fortran/vla-ptr-info.exp: Likewise.
* gdb.fortran/vla-value.exp: Likewise.

gdb/ChangeLog
gdb/f-typeprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.fortran/ptr-indentation.exp
gdb/testsuite/gdb.fortran/ptype-on-functions.exp
gdb/testsuite/gdb.fortran/vla-ptr-info.exp
gdb/testsuite/gdb.fortran/vla-value.exp

index 45ecbee762c24d44897b810c0537a2b0323417da..fcc784c4678a7443d325d253ec976d976e59e52b 100644 (file)
@@ -1,3 +1,9 @@
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * f-typeprint.c (f_print_type): Update rules for printing
+       whitespace.
+       (f_type_print_varspec_suffix): Likewise.
+
 2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
            Chris January  <chris.january@arm.com>
 
index 0329e50fd0b60675f3e90eee263b66878d4a1639..66a450a65c7f3dfa4c7629539319a848fb841181 100644 (file)
@@ -68,13 +68,20 @@ f_print_type (struct type *type, const char *varstring, struct ui_file *stream,
   f_type_print_base (type, stream, show, level);
   code = TYPE_CODE (type);
   if ((varstring != NULL && *varstring != '\0')
-  /* Need a space if going to print stars or brackets;
-     but not if we will print just a type name.  */
-      || ((show > 0 || TYPE_NAME (type) == 0)
-          && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC
+      /* Need a space if going to print stars or brackets; but not if we
+        will print just a type name.  */
+      || ((show > 0
+          || TYPE_NAME (type) == 0)
+          && (code == TYPE_CODE_FUNC
              || code == TYPE_CODE_METHOD
              || code == TYPE_CODE_ARRAY
-             || code == TYPE_CODE_REF)))
+             || ((code == TYPE_CODE_PTR
+                  || code == TYPE_CODE_REF)
+                 && (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_FUNC
+                     || (TYPE_CODE (TYPE_TARGET_TYPE (type))
+                         == TYPE_CODE_METHOD)
+                     || (TYPE_CODE (TYPE_TARGET_TYPE (type))
+                         == TYPE_CODE_ARRAY))))))
     fputs_filtered (" ", stream);
   f_type_print_varspec_prefix (type, stream, show, 0);
 
@@ -222,7 +229,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_REF:
       f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0,
                                   arrayprint_recurse_level);
-      fprintf_filtered (stream, ")");
+      fprintf_filtered (stream, " )");
       break;
 
     case TYPE_CODE_FUNC:
@@ -232,7 +239,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
        f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
                                     passed_a_ptr, 0, arrayprint_recurse_level);
        if (passed_a_ptr)
-         fprintf_filtered (stream, ")");
+         fprintf_filtered (stream, ") ");
        fprintf_filtered (stream, "(");
        if (nfields == 0 && TYPE_PROTOTYPED (type))
          f_print_type (builtin_f_type (get_type_arch (type))->builtin_void,
index 1cfa4d39c5ad6fa7dc33924d4f919be49d3dba87..636d36d6044732228d6a374d78fc6e9cf5043fe3 100644 (file)
@@ -1,3 +1,10 @@
+2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * gdb.fortran/ptr-indentation.exp: Update expected results.
+       * gdb.fortran/ptype-on-functions.exp: Likewise.
+       * gdb.fortran/vla-ptr-info.exp: Likewise.
+       * gdb.fortran/vla-value.exp: Likewise.
+
 2019-04-30  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * gdb.fortran/ptype-on-functions.exp: New file.
index b0eb941eaa946616dd4aee64e936b5475d6f1bbf..0c5d225580201f5a6c037a9eb3478281d781574f 100644 (file)
@@ -37,5 +37,5 @@ gdb_continue_to_breakpoint "BP1"
 gdb_test "ptype tinsta" \
   [multi_line "type = Type tuserdef" \
               "    $int :: i" \
-              "    PTR TO -> \\( $real :: ptr\\)" \
+              "    PTR TO -> \\( $real :: ptr \\)" \
               "End Type tuserdef"]
index 4ce78623b47a7ed5316c08deb87cc3d4dae80ad3..528828663c4aeb85f80d4cb3ac181b21d0967805 100644 (file)
@@ -42,4 +42,4 @@ gdb_test "ptype say_numbers" \
     "type = void \\(integer\\(kind=4\\), integer\\(kind=4\\), integer\\(kind=4\\)\\)"
 
 gdb_test "ptype fun_ptr" \
-    "type = PTR TO -> \\( integer\\(kind=4\\) \\(\\)\\(REF TO -> \\( integer\\(kind=4\\) \\)\\)\\)"
+    "type = PTR TO -> \\( integer\\(kind=4\\) \\(\\) \\(REF TO -> \\( integer\\(kind=4\\) \\)\\) \\)"
index 58f3395122fba3dd09c4fe4e5c0e1fb602addef0..6b9625ad9963e2341c7240c3bb45ee5078daf6d3 100644 (file)
@@ -28,5 +28,5 @@ if ![runto_main] {
 # Check the status of a pointer to a dynamic array.
 gdb_breakpoint [gdb_get_line_number "pvla-associated"]
 gdb_continue_to_breakpoint "pvla-associated"
-gdb_test "print &pvla" " = \\(PTR TO -> \\( real\\(kind=4\\) \\(10,10,10\\)\\)\\) ${hex}" \
+gdb_test "print &pvla" " = \\(PTR TO -> \\( real\\(kind=4\\) \\(10,10,10\\) \\)\\) ${hex}" \
   "print pvla pointer information"
index 3582d47c94641c781d5fd191fb70d34158321295..507137bed2186b748d0c775322004c9800756b9a 100644 (file)
@@ -35,7 +35,7 @@ gdb_breakpoint [gdb_get_line_number "vla1-init"]
 gdb_continue_to_breakpoint "vla1-init"
 gdb_test "print vla1" " = <not allocated>" "print non-allocated vla1"
 gdb_test "print &vla1" \
-  " = \\\(PTR TO -> \\\( $real \\\(<not allocated>\\\)\\\)\\\) $hex" \
+  " = \\\(PTR TO -> \\\( $real \\\(<not allocated>\\\) \\\)\\\) $hex" \
   "print non-allocated &vla1"
 gdb_test "print vla1(1,1,1)" "no such vector element \\\(vector not allocated\\\)" \
   "print member in non-allocated vla1 (1)"
@@ -56,7 +56,7 @@ with_timeout_factor 15 {
        "step over value assignment of vla1"
 }
 gdb_test "print &vla1" \
-  " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\)\\\)\\\) $hex" \
+  " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\) \\\)\\\) $hex" \
   "print allocated &vla1"
 gdb_test "print vla1(3, 6, 9)" " = 1311" "print allocated vla1(3,6,9)"
 gdb_test "print vla1(1, 3, 8)" " = 1311" "print allocated vla1(1,3,8)"
@@ -76,7 +76,7 @@ gdb_test "print vla1(9, 9, 9)" " = 999" \
 # Try to access values in undefined pointer to VLA (dangling)
 gdb_test "print pvla" " = <not associated>" "print undefined pvla"
 gdb_test "print &pvla" \
-  " = \\\(PTR TO -> \\\( $real \\\(<not associated>\\\)\\\)\\\) $hex" \
+  " = \\\(PTR TO -> \\\( $real \\\(<not associated>\\\) \\\)\\\) $hex" \
   "print non-associated &pvla"
 gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated\\\)" \
   "print undefined pvla(1,3,8)"
@@ -85,7 +85,7 @@ gdb_test "print pvla(1, 3, 8)" "no such vector element \\\(vector not associated
 gdb_breakpoint [gdb_get_line_number "pvla-associated"]
 gdb_continue_to_breakpoint "pvla-associated"
 gdb_test "print &pvla" \
-  " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\)\\\)\\\) $hex" \
+  " = \\\(PTR TO -> \\\( $real \\\(10,10,10\\\) \\\)\\\) $hex" \
   "print associated &pvla"
 gdb_test "print pvla(3, 6, 9)" " = 42" "print associated pvla(3,6,9)"
 gdb_test "print pvla(1, 3, 8)" " = 1001" "print associated pvla(1,3,8)"