[gobject-introspection] Revert "Add support for element-type to GListModel"



commit bb364bd25d50215b0c40d98ba5ecf2aa779e53a2
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Tue Apr 28 11:18:18 2020 +0200

    Revert "Add support for element-type to GListModel"
    
    Breaks vapigen and changes GListModel definition in Gio-2.0.gir
    
    This reverts commit a9f45431684e6be3623e272e54d481e4c5d9423d.

 giscanner/docwriter.py                             | 18 ++++--------
 giscanner/girparser.py                             |  2 +-
 giscanner/introspectablepass.py                    |  3 +-
 giscanner/transformer.py                           |  3 --
 .../Regress.test_list_model_none.page              | 30 --------------------
 .../Regress.test_list_model_object.page            | 31 --------------------
 .../Regress.test_list_model_none.page              | 32 ---------------------
 .../Regress.test_list_model_object.page            | 33 ----------------------
 .../Regress.test_list_model_none.page              | 32 ---------------------
 .../Regress.test_list_model_object.page            | 32 ---------------------
 tests/scanner/Regress-1.0-expected.gir             | 31 --------------------
 tests/scanner/Regress-1.0-sections-expected.txt    |  2 --
 tests/scanner/regress.c                            | 30 --------------------
 tests/scanner/regress.h                            |  6 ----
 14 files changed, 7 insertions(+), 278 deletions(-)
---
diff --git a/giscanner/docwriter.py b/giscanner/docwriter.py
index e4a8f7c5..786da80d 100644
--- a/giscanner/docwriter.py
+++ b/giscanner/docwriter.py
@@ -793,11 +793,7 @@ class DocFormatterPython(DocFormatterIntrospectableBase):
         return fundamental_types.get(name, name)
 
     def format_type(self, type_, link=False):
-        if isinstance(type_, ast.List):
-            if type_.name == 'Gio.ListModel':
-                return 'Gio.ListModel(item_type=' + self.format_type(type_.element_type) + ')'
-            return '[' + self.format_type(type_.element_type) + ']'
-        elif isinstance(type_, ast.Array):
+        if isinstance(type_, (ast.List, ast.Array)):
             return '[' + self.format_type(type_.element_type) + ']'
         elif isinstance(type_, ast.Map):
             return '{%s: %s}' % (self.format_type(type_.key_type),
@@ -934,14 +930,10 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
         return fundamental_types.get(name, name)
 
     def format_type(self, type_, link=False):
-        if isinstance(type_, ast.Array):
-            if type_.element_type.target_fundamental in ('gint8', 'guint8'):
-                return 'ByteArray'
-            else:
-                return 'Array(' + self.format_type(type_.element_type, link) + ')'
-        elif isinstance(type_, ast.List):
-            if type_.name == 'Gio.ListModel':
-                return 'Gio.ListModel({item_type: ' + self.format_type(type_.element_type) + '})'
+        if isinstance(type_, ast.Array) and \
+           type_.element_type.target_fundamental in ('gint8', 'guint8'):
+            return 'ByteArray'
+        elif isinstance(type_, (ast.List, ast.Array)):
             return 'Array(' + self.format_type(type_.element_type, link) + ')'
         elif isinstance(type_, ast.Map):
             return '{%s: %s}' % (self.format_type(type_.key_type, link),
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index d31b26cf..35206a41 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -492,7 +492,7 @@ class GIRParser(object):
                 if ctype is None:
                     return ast.TypeUnknown()
                 return ast.Type(ctype=ctype)
-            elif name in ['GLib.List', 'GLib.SList', 'Gio.ListModel']:
+            elif name in ['GLib.List', 'GLib.SList']:
                 subchild = self._find_first_child(typenode,
                                                   list(map(_corens, ('callback', 'array',
                                                                 '    varargs', 'type'))))
diff --git a/giscanner/introspectablepass.py b/giscanner/introspectablepass.py
index 8ac50064..e2056b42 100644
--- a/giscanner/introspectablepass.py
+++ b/giscanner/introspectablepass.py
@@ -89,8 +89,7 @@ class IntrospectablePass(object):
             return
 
         if (isinstance(node.type, (ast.List, ast.Array))
-        and node.type.element_type == ast.TYPE_ANY
-        and not (isinstance(node.type, ast.List) and node.type.name == 'Gio.ListModel')):
+        and node.type.element_type == ast.TYPE_ANY):
             self._parameter_warning(parent, node, "Missing (element-type) annotation")
             parent.introspectable = False
             return
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 7f230a20..bcabdedc 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -698,9 +698,6 @@ raise ValueError."""
         elif base in ('GHashTable', 'GLib.HashTable', 'GObject.HashTable'):
             return ast.Map(ast.TYPE_ANY, ast.TYPE_ANY, ctype=ctype, is_const=is_const,
                            complete_ctype=complete_ctype)
-        elif base in ('GListModel', 'Gio.ListModel'):
-            return ast.List('Gio.ListModel', ast.TYPE_ANY, ctype=ctype,
-                            is_const=is_const, complete_ctype=complete_ctype)
         return None
 
     def create_type_from_ctype_string(self, ctype, is_const=False,
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index bcba3fbe..cef3b124 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -8041,37 +8041,6 @@ element-type annotation.</doc>
         </parameter>
       </parameters>
     </function>
-    <function name="test_list_model_none"
-              c:identifier="regress_test_list_model_none">
-      <doc xml:space="preserve"
-           filename="regress.c"
-           line="4689">Test GListModel with no annotation.</doc>
-      <source-position filename="regress.h" line="1538"/>
-      <return-value transfer-ownership="full">
-        <doc xml:space="preserve"
-             filename="regress.c"
-             line="4694">a GListModel</doc>
-        <type name="Gio.ListModel" c:type="GListModel*">
-          <type name="gpointer" c:type="gpointer"/>
-        </type>
-      </return-value>
-    </function>
-    <function name="test_list_model_object"
-              c:identifier="regress_test_list_model_object">
-      <doc xml:space="preserve"
-           filename="regress.c"
-           line="4704">Test GListModel return value with an element type annotation.</doc>
-      <source-position filename="regress.h" line="1541"/>
-      <return-value transfer-ownership="full">
-        <doc xml:space="preserve"
-             filename="regress.c"
-             line="4709">a GListModel
-  containing RegressTestObj values</doc>
-        <type name="Gio.ListModel" c:type="GListModel*">
-          <type name="TestObj"/>
-        </type>
-      </return-value>
-    </function>
     <function name="test_long" c:identifier="regress_test_long">
       <source-position filename="regress.h" line="73"/>
       <return-value transfer-ownership="none">
diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt
index 84f7ec67..b35b3a9a 100644
--- a/tests/scanner/Regress-1.0-sections-expected.txt
+++ b/tests/scanner/Regress-1.0-sections-expected.txt
@@ -159,8 +159,6 @@ regress_test_int64
 regress_test_int8
 regress_test_int_out_utf8
 regress_test_int_value_arg
-regress_test_list_model_none
-regress_test_list_model_object
 regress_test_long
 regress_test_multi_callback
 regress_test_multi_double_args
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index e81d1989..3a63436b 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -4686,33 +4686,3 @@ regress_test_array_struct_in_none (RegressTestStructA *arr, gsize len)
   g_assert_cmpint (arr[2].some_int, ==, 303);
 }
 
-/**
- * regress_test_list_model_none:
- *
- * Test GListModel with no annotation.
- *
- * Returns: (transfer full): a GListModel
- */
-GListModel *
-regress_test_list_model_none (void)
-{
-  GListStore *res = g_list_store_new (regress_test_obj_get_type ());
-
-  return G_LIST_MODEL (res);
-}
-
-/**
- * regress_test_list_model_object:
- *
- * Test GListModel return value with an element type annotation.
- *
- * Returns: (transfer full) (element-type RegressTestObj): a GListModel
- *   containing RegressTestObj values
- */
-GListModel *
-regress_test_list_model_object (void)
-{
-  GListStore *res = g_list_store_new (regress_test_obj_get_type ());
-
-  return G_LIST_MODEL (res);
-}
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 9ff699fb..0b239f14 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -1534,10 +1534,4 @@ void regress_test_array_struct_in_full (RegressTestStructA *arr, gsize len);
 _GI_TEST_EXTERN
 void regress_test_array_struct_in_none (RegressTestStructA *arr, gsize len);
 
-_GI_TEST_EXTERN
-GListModel *regress_test_list_model_none (void);
-
-_GI_TEST_EXTERN
-GListModel *regress_test_list_model_object (void);
-
 #endif /* __GITESTTYPES_H__ */


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