diff options
-rw-r--r-- | giscanner/maintransformer.py | 2 | ||||
-rw-r--r-- | tests/scanner/Foo-1.0-expected.gir | 5 | ||||
-rw-r--r-- | tests/scanner/foo.c | 12 | ||||
-rw-r--r-- | tests/scanner/foo.h | 3 |
4 files changed, 20 insertions, 2 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index a921ad47..5b1ffb79 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -1166,7 +1166,7 @@ method or constructor of some type.""" parent = self._transformer.lookup_typenode(parent.parent) else: parent = None - if parent is None or parent.gi_name == 'GObject.Object': + if parent is None: message.warn_node(func, "Return value is not superclass for constructor; " "symbol=%r constructed=%r return=%r" % ( diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir index b8dc33f5..826d676d 100644 --- a/tests/scanner/Foo-1.0-expected.gir +++ b/tests/scanner/Foo-1.0-expected.gir @@ -366,6 +366,11 @@ and/or use gtk-doc annotations. --> <type name="Object" c:type="FooObject*"/> </return-value> </constructor> + <constructor name="new_as_super" c:identifier="foo_object_new_as_super"> + <return-value transfer-ownership="full"> + <type name="GObject.Object" c:type="GObject*"/> + </return-value> + </constructor> <function name="a_global_method" c:identifier="foo_object_a_global_method"> <return-value transfer-ownership="none"> diff --git a/tests/scanner/foo.c b/tests/scanner/foo.c index 54566404..3e15444f 100644 --- a/tests/scanner/foo.c +++ b/tests/scanner/foo.c @@ -226,6 +226,18 @@ foo_object_init (FooObject *object) } +FooObject * +foo_object_new (void) +{ + return g_object_new (FOO_TYPE_OBJECT, NULL); +} + +GObject * +foo_object_new_as_super (void) +{ + return g_object_new (FOO_TYPE_OBJECT, NULL); +} + /** * foo_object_external_type: * @object: a #FooObject diff --git a/tests/scanner/foo.h b/tests/scanner/foo.h index bd502219..4b20ed7d 100644 --- a/tests/scanner/foo.h +++ b/tests/scanner/foo.h @@ -113,8 +113,9 @@ struct _FooObjectClass gint foo_init (void); GType foo_object_get_type (void) G_GNUC_CONST; -FooObject* foo_object_new (); +FooObject* foo_object_new (void); UtilityObject* foo_object_external_type (FooObject *object); +GObject* foo_object_new_as_super (void); void foo_object_various (FooObject *object, void *data, GType some_type); |