summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2015-01-08 21:31:20 +0100
committerChristoph Reiter <creiter@src.gnome.org>2017-05-17 23:03:00 +0200
commit12c304562add775dd80f698ad23aa59e8e87d879 (patch)
treeceed552d1a130b0335d498ffd55ba79c712fb24e
parent3a140df2d29410d91f9bc86e9dd8bfbf82b3fad3 (diff)
downloadgobject-introspection-12c304562add775dd80f698ad23aa59e8e87d879.tar.gz
Add a test for "(in) (transfer floating)" parameters beeing an alias for "(in) (transfer none)".
The "(in)" alias was (unintenionally?) introduced in https://git.gnome.org/browse/gobject-introspection/commit/?id=699ad0fec427c79bec1 which added an alias for return annotations. This change makes sure that this continues to work. Functions which ref_sink in params are currently marked as transfer-none since in the case of non-floating objects (which all bindings use) no ownership gets transfered. But in case of floating objects, which is the common case when using the C API directly, the ownership _is_ transfered. Using transfer-floating should make this clearer while giving the same result for bindings. Functions where this could be used: gst_bin_add, gtk_container_add, gst_element_add_pad See https://bugzilla.gnome.org/show_bug.cgi?id=657202 and https://bugzilla.gnome.org/show_bug.cgi?id=702960 https://bugzilla.gnome.org/show_bug.cgi?id=742618
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page10
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page10
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page11
-rw-r--r--tests/scanner/Regress-1.0-expected.gir6
-rw-r--r--tests/scanner/annotation.c3
-rw-r--r--tests/scanner/annotation.h2
6 files changed, 37 insertions, 5 deletions
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page
index 78684c87..440535f1 100644
--- a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page
@@ -12,16 +12,24 @@
<api:type>GObject*</api:type>
</api:returns>
<api:name>regress_annotation_transfer_floating</api:name>
+ <api:arg>
+ <api:type>GObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
</api:function>
</info>
<title>regress_annotation_transfer_floating</title>
<synopsis><code mime="text/x-csrc">
-GObject* regress_annotation_transfer_floating (void);
+GObject* regress_annotation_transfer_floating (GObject* object);
</code></synopsis>
<terms>
<item>
+<title><code>object</code></title>
+ <p>an object</p>
+</item>
+<item>
<title><code>Returns</code></title>
<p>A floating object</p>
</item>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page
index be5134b1..79183812 100644
--- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page
@@ -12,11 +12,15 @@
<api:type>GObject.Object</api:type>
</api:returns>
<api:name>regress_annotation_transfer_floating</api:name>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>object</api:name>
+ </api:arg>
</api:function>
</info>
<title>Regress.annotation_transfer_floating</title>
<synopsis><code mime="text/x-gjs">
-function annotation_transfer_floating(): <link href="../GObject-2.0/GObject.Object.html">GObject.Object</link> {
+function annotation_transfer_floating(object: <link href="../GObject-2.0/GObject.Object.html">GObject.Object</link>): <link href="../GObject-2.0/GObject.Object.html">GObject.Object</link> {
// Gjs wrapper for regress_annotation_transfer_floating()
}
</code></synopsis>
@@ -24,6 +28,10 @@ function annotation_transfer_floating(): <link href="../GObject-2.0/GObject.Obje
<terms>
<item>
+<title><code>object</code></title>
+ <p>an object</p>
+</item>
+<item>
<title><code>Returns</code></title>
<p>A floating object</p>
</item>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page
index f8f68c11..1f247cf4 100644
--- a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page
@@ -12,18 +12,27 @@
<api:type>GObject.Object</api:type>
</api:returns>
<api:name>regress_annotation_transfer_floating</api:name>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>object</api:name>
+ </api:arg>
</api:function>
</info>
<title>Regress.annotation_transfer_floating</title>
<synopsis><code mime="text/x-python">
+@accepts(GObject.Object)
@returns(GObject.Object)
-def annotation_transfer_floating():
+def annotation_transfer_floating(object):
# Python wrapper for regress_annotation_transfer_floating()
</code></synopsis>
<terms>
<item>
+<title><code>object</code></title>
+ <p>an object</p>
+</item>
+<item>
<title><code>Returns</code></title>
{formatter.format(node, node.retval.doc)}
</item>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 91efacc9..7596282b 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -4542,6 +4542,12 @@ detection, and fixing it via annotations.</doc>
<doc xml:space="preserve">A floating object</doc>
<type name="GObject.Object" c:type="GObject*"/>
</return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">an object</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </parameter>
+ </parameters>
</function>
<function name="annotation_versioned"
c:identifier="regress_annotation_versioned"
diff --git a/tests/scanner/annotation.c b/tests/scanner/annotation.c
index da364e16..49bdd246 100644
--- a/tests/scanner/annotation.c
+++ b/tests/scanner/annotation.c
@@ -821,11 +821,12 @@ regress_annotation_return_filename (void)
/**
* regress_annotation_transfer_floating:
+ * @object: (in) (transfer floating): an object
*
* Returns: (transfer floating): A floating object
*/
GObject *
-regress_annotation_transfer_floating(void)
+regress_annotation_transfer_floating (GObject *object)
{
return NULL;
}
diff --git a/tests/scanner/annotation.h b/tests/scanner/annotation.h
index 07894dfc..92c0b6bd 100644
--- a/tests/scanner/annotation.h
+++ b/tests/scanner/annotation.h
@@ -276,7 +276,7 @@ gchar* regress_annotation_return_filename (void);
_GI_TEST_EXTERN
-GObject * regress_annotation_transfer_floating(void);
+GObject * regress_annotation_transfer_floating (GObject *object);
/* This one we can handle properly */
#define REGRESS_ANNOTATION_CALCULATED_DEFINE (10 * 10)