poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[COMMITTED] poke: do not show getters/setters/pretty-printers in .info t


From: Jose E. Marchesi
Subject: [COMMITTED] poke: do not show getters/setters/pretty-printers in .info type
Date: Sat, 28 Oct 2023 06:21:31 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

2023-10-27  Jose E. Marchesi  <jemarch@gnu.org>

        * poke/pk-info.pk (pk_info_type): Do not list computed field
        setters and getters nor pretty printers as methods.
---
 ChangeLog       |  5 +++++
 poke/pk-info.pk | 23 +++++++++++++++++++++--
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e2295797..0b4deadd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2023-10-27  Jose E. Marchesi  <jemarch@gnu.org>
+
+       * poke/pk-info.pk (pk_info_type): Do not list computed field
+       setters and getters nor pretty printers as methods.
+
 2023-10-23  Jose E. Marchesi  <jemarch@gnu.org>
 
        * pickles/gcov.pk: GCOV_Length now stores length in number of
diff --git a/poke/pk-info.pk b/poke/pk-info.pk
index 125be88e..3322dd45 100644
--- a/poke/pk-info.pk
+++ b/poke/pk-info.pk
@@ -100,6 +100,8 @@ fun pk_info_type = (Pk_Type typ) void:
   /* Some kind of types need to print additional info.  */
   if (typ.code == PK_TYPE_STRUCT)
   {
+    var computed_field_names = string[]();
+
     if (typ.nfields > 0)
     {
       print "Fields:\n";
@@ -142,6 +144,7 @@ fun pk_info_type = (Pk_Type typ) void:
           table.row;
           table.column (typ.fnames[i]);
           table.column (typ.ftypes[i]);
+          apush (computed_field_names, typ.fnames[i]);
         }
         table.print_table;
       }
@@ -149,19 +152,35 @@ fun pk_info_type = (Pk_Type typ) void:
 
     if (typ.nmethods > 0)
     {
-      print "Methods:\n";
       var table = Pk_Table { num_columns = 2, indent = 2, max_column_size = 80 
};
+      var nmethods_to_print = 0;
 
       table.row ("table-header");
       table.column ("Name");
       table.column ("Type");
       for (var i = 0; i < typ.nmethods; ++i)
       {
+        /* Do not include getters and setters of computed fields.  */
+        var mname = typ.mnames[i];
+        if (mname'length > 4
+            && (mname[0:4] == "get_" || mname[0:4] == "set_")
+            && mname[4:] in computed_field_names)
+          continue;
+        /* Ditto for pretty-printers.  */
+        if (mname == "_print")
+          continue;
+
         table.row;
         table.column (typ.mnames[i]);
         table.column (typ.mtypes[i]);
+        nmethods_to_print++;
       }
-      table.print_table;
+
+      if (nmethods_to_print > 0)
+        {
+          print "Methods:\n";
+          table.print_table;
+        }
     }
   }
 }
-- 
2.30.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]