diff options
author | Ben Iofel <iofelben@gmail.com> | 2015-09-25 15:11:17 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2015-10-19 18:00:58 -0400 |
commit | d9a6824b2dd373f7bd3d3b3f434d2fe7069eaa51 (patch) | |
tree | e14a47b2f213a3d363cb313f8921da2281ccbf2d /tests | |
parent | 5341da3520ef513e5a7c49e2d8737bb3f2341a3d (diff) | |
download | gobject-introspection-d9a6824b2dd373f7bd3d3b3f434d2fe7069eaa51.tar.gz |
Add support for function typedefs without pointer
g-ir-scanner now supports something like this:
typedef void my_callback(int);
Notice how my_callback is not a pointer.
https://bugzilla.gnome.org/show_bug.cgi?id=755645
Diffstat (limited to 'tests')
10 files changed, 214 insertions, 0 deletions
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestNoPtrCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestNoPtrCallback.page new file mode 100644 index 00000000..02140c29 --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestNoPtrCallback.page @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<page id="Regress.TestNoPtrCallback" + type="topic" + style="callback" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="callback" type="guide"/> + </info> + <title>Regress.TestNoPtrCallback</title> + <synopsis><code mime="text/x-csrc"> +void TestNoPtrCallback (void); + </code></synopsis> + + +<terms> +<item> +<title><code>Returns</code></title> + +</item> +</terms> + +</page> diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_noptr_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_noptr_callback.page new file mode 100644 index 00000000..c760265d --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_noptr_callback.page @@ -0,0 +1,38 @@ +<?xml version="1.0"?> +<page id="Regress.test_noptr_callback" + type="topic" + style="function" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="function" type="guide"/> + <api:function> + <api:returns> + <api:type>void</api:type> + </api:returns> + <api:name>regress_test_noptr_callback</api:name> + <api:arg> + <api:type>RegressTestNoPtrCallback</api:type> + <api:name>callback</api:name> + </api:arg> + </api:function> + </info> + <title>regress_test_noptr_callback</title> + <synopsis><code mime="text/x-csrc"> +void regress_test_noptr_callback (RegressTestNoPtrCallback callback); + </code></synopsis> + + +<terms> +<item> +<title><code>callback</code></title> + +</item> +<item> +<title><code>Returns</code></title> + +</item> +</terms> + +</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestNoPtrCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestNoPtrCallback.page new file mode 100644 index 00000000..7dd66f4d --- /dev/null +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestNoPtrCallback.page @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<page id="Regress.TestNoPtrCallback" + type="topic" + style="callback" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="callback" type="guide"/> + </info> + <title>Regress.TestNoPtrCallback</title> + <synopsis><code mime="text/x-gjs"> +function onTestNoPtrCallback(): void { +} + </code></synopsis> + + + +</page> diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_noptr_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_noptr_callback.page new file mode 100644 index 00000000..a7cec65d --- /dev/null +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_noptr_callback.page @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<page id="Regress.test_noptr_callback" + type="topic" + style="function" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="function" type="guide"/> + <api:function> + <api:returns> + <api:type>void</api:type> + </api:returns> + <api:name>regress_test_noptr_callback</api:name> + <api:arg> + <api:type>Regress.TestNoPtrCallback</api:type> + <api:name>callback</api:name> + </api:arg> + </api:function> + </info> + <title>Regress.test_noptr_callback</title> + <synopsis><code mime="text/x-gjs"> +function test_noptr_callback(callback: <link xref="Regress.TestNoPtrCallback">Regress.TestNoPtrCallback</link>): void { + // Gjs wrapper for regress_test_noptr_callback() +} + </code></synopsis> + + +<terms> +<item> +<title><code>callback</code></title> + +</item> +</terms> + +</page> diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestNoPtrCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestNoPtrCallback.page new file mode 100644 index 00000000..b7f04f55 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestNoPtrCallback.page @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<page id="Regress.TestNoPtrCallback" + type="topic" + style="callback" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="callback" type="guide"/> + </info> + <title>Regress.TestNoPtrCallback</title> + <synopsis><code mime="text/x-python"> +@returns(none) +def on_TestNoPtrCallback(): + </code></synopsis> + + +<terms> +</terms> + +</page> diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_noptr_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_noptr_callback.page new file mode 100644 index 00000000..e3764462 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_noptr_callback.page @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<page id="Regress.test_noptr_callback" + type="topic" + style="function" + xmlns="http://projectmallard.org/1.0/" + xmlns:api="http://projectmallard.org/experimental/api/" + xmlns:ui="http://projectmallard.org/1.0/ui/"> + <info> + <link xref="index" group="function" type="guide"/> + <api:function> + <api:returns> + <api:type>none</api:type> + </api:returns> + <api:name>regress_test_noptr_callback</api:name> + <api:arg> + <api:type>Regress.TestNoPtrCallback</api:type> + <api:name>callback</api:name> + </api:arg> + </api:function> + </info> + <title>Regress.test_noptr_callback</title> + <synopsis><code mime="text/x-python"> +@accepts(Regress.TestNoPtrCallback) +@returns(none) +def test_noptr_callback(callback): + # Python wrapper for regress_test_noptr_callback() + </code></synopsis> + + +<terms> +<item> +<title><code>callback</code></title> + +</item> +</terms> + +</page> diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 620a2907..6f991b78 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -2883,6 +2883,11 @@ use it should be.</doc> <type name="GObject.TypeInterface" c:type="GTypeInterface"/> </field> </record> + <callback name="TestNoPtrCallback" c:type="RegressTestNoPtrCallback"> + <return-value transfer-ownership="none"> + <type name="none" c:type="void"/> + </return-value> + </callback> <class name="TestObj" c:symbol-prefix="test_obj" c:type="RegressTestObj" @@ -6224,6 +6229,21 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d </parameter> </parameters> </function> + <function name="test_noptr_callback" + c:identifier="regress_test_noptr_callback"> + <return-value transfer-ownership="none"> + <type name="none" c:type="void"/> + </return-value> + <parameters> + <parameter name="callback" + transfer-ownership="none" + nullable="1" + allow-none="1" + scope="call"> + <type name="TestNoPtrCallback" c:type="RegressTestNoPtrCallback"/> + </parameter> + </parameters> + </function> <function name="test_null_gerror_callback" c:identifier="regress_test_null_gerror_callback"> <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 335bfec7..e0f9a1b7 100644 --- a/tests/scanner/Regress-1.0-sections-expected.txt +++ b/tests/scanner/Regress-1.0-sections-expected.txt @@ -155,6 +155,7 @@ regress_test_multi_callback regress_test_multi_double_args regress_test_multiline_doc_comments regress_test_nested_parameter +regress_test_noptr_callback regress_test_null_gerror_callback regress_test_owned_gerror_callback regress_test_return_allow_none diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index 3644f4ca..83175b07 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -3476,6 +3476,20 @@ regress_test_simple_callback (RegressTestSimpleCallback callback) } /** + * regress_test_noptr_callback: + * @callback: (scope call) (allow-none): + * + **/ +void +regress_test_noptr_callback (RegressTestNoPtrCallback callback) +{ + if (callback != NULL) + callback(); + + return; +} + +/** * regress_test_callback_user_data: * @callback: (scope call): * @user_data: (not nullable): diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h index ba0b5626..d77a7a97 100644 --- a/tests/scanner/regress.h +++ b/tests/scanner/regress.h @@ -1033,6 +1033,7 @@ regress_test_fundamental_sub_object_new (const char *data); /* callback */ typedef void (*RegressTestSimpleCallback) (void); +typedef void RegressTestNoPtrCallback (void); typedef int (*RegressTestCallback) (void); typedef int (*RegressTestCallbackUserData) (gpointer user_data); /** @@ -1077,6 +1078,9 @@ _GI_TEST_EXTERN void regress_test_simple_callback (RegressTestSimpleCallback callback); _GI_TEST_EXTERN +void regress_test_noptr_callback (RegressTestNoPtrCallback callback); + +_GI_TEST_EXTERN int regress_test_callback (RegressTestCallback callback); _GI_TEST_EXTERN |