diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-01 15:33:43 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-01 16:00:05 +0200 |
commit | 394535622c3041fb3d431bfc768de71056f3f7b3 (patch) | |
tree | 677d9e4997d45db74fea75799e495d5ddb820b50 | |
parent | 61dd28834abb0e3b90b6978ca5221dfecd5db415 (diff) | |
download | vala-394535622c3041fb3d431bfc768de71056f3f7b3.tar.gz |
girwriter: Don't use instance-parameter inside callback
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1167
-rw-r--r-- | codegen/valagirwriter.vala | 14 | ||||
-rw-r--r-- | tests/girwriter/GirTest-1.0.gir-expected | 184 |
2 files changed, 103 insertions, 95 deletions
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index ac4cc581c..3f5ebcb1b 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -1190,9 +1190,9 @@ public class Vala.GIRWriter : CodeVisitor { } foreach (Parameter param in params) { - write_param_or_return (param.variable_type, "parameter", ref index, get_ccode_array_length (param), param.name, get_parameter_comment (param), param.direction, false, false, param.ellipsis || param.params_array); + write_param_or_return (param.variable_type, "parameter", ref index, get_ccode_array_length (param), get_ccode_name (param), get_parameter_comment (param), param.direction, false, false, param.ellipsis || param.params_array); - write_implicit_params (param.variable_type, ref index, get_ccode_array_length (param), param.name, param.direction); + write_implicit_params (param.variable_type, ref index, get_ccode_array_length (param), get_ccode_name (param), param.direction); } if (ret_is_struct) { @@ -1369,7 +1369,15 @@ public class Vala.GIRWriter : CodeVisitor { write_doc (get_method_comment (m)); } - write_params_and_return (params, m.get_type_parameters (), return_type, get_ccode_array_length (m), return_comment, false, m.this_parameter); + if (tag_name == "callback" && m.this_parameter != null) { + m.this_parameter.set_attribute_string ("CCode", "cname", "self"); + var static_params = new ArrayList<Vala.Parameter> (); + static_params.add (m.this_parameter); + static_params.add_all (params); + write_params_and_return (static_params, m.get_type_parameters (), return_type, get_ccode_array_length (m), return_comment, false); + } else { + write_params_and_return (params, m.get_type_parameters (), return_type, get_ccode_array_length (m), return_comment, false, m.this_parameter); + } indent--; write_indent (); diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected index d2e83c8fd..0a342ea5b 100644 --- a/tests/girwriter/GirTest-1.0.gir-expected +++ b/tests/girwriter/GirTest-1.0.gir-expected @@ -1056,9 +1056,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint8" c:type="gint8"/> </parameter> @@ -1071,9 +1071,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint8" c:type="gint8"/> </parameter> @@ -1086,10 +1086,10 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async"> + </parameter> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -1104,9 +1104,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -1119,13 +1119,13 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="i1" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -1140,9 +1140,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -1158,9 +1158,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -1170,9 +1170,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -1182,10 +1182,10 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async"> + </parameter> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -1200,9 +1200,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -1215,18 +1215,18 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param1" transfer-ownership="none"> - <array length="1" c:type="gint*"> + <array length="2" c:type="gint*"> <type name="gint" c:type="gint"/> </array> </parameter> <parameter name="param1_length1" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="param2" transfer-ownership="none" closure="3" scope="notified" destroy="4"> + <parameter name="param2" transfer-ownership="none" closure="4" scope="notified" destroy="5"> <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/> </parameter> <parameter name="param2_target" transfer-ownership="none" allow-none="1"> @@ -1244,9 +1244,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="i1" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> @@ -1586,9 +1586,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint8" c:type="gint8"/> </parameter> @@ -1601,9 +1601,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" direction="inout" transfer-ownership="full"> <type name="gint8" c:type="gint8*"/> </parameter> @@ -1616,9 +1616,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" direction="out" transfer-ownership="full"> <type name="gint8" c:type="gint8*"/> </parameter> @@ -1631,9 +1631,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -1643,9 +1643,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> @@ -1661,13 +1661,13 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -1682,9 +1682,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -1697,9 +1697,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint8" c:type="gint8"/> </parameter> @@ -1712,9 +1712,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -1724,10 +1724,10 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async"> + </parameter> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -1742,9 +1742,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -1757,18 +1757,18 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/> - </instance-parameter> + </parameter> <parameter name="param1" transfer-ownership="none"> - <array length="1" c:type="gint*"> + <array length="2" c:type="gint*"> <type name="gint" c:type="gint"/> </array> </parameter> <parameter name="param1_length1" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="param2" transfer-ownership="none" closure="3" scope="notified" destroy="4"> + <parameter name="param2" transfer-ownership="none" closure="4" scope="notified" destroy="5"> <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/> </parameter> <parameter name="param2_target" transfer-ownership="none" allow-none="1"> @@ -2439,9 +2439,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint8" c:type="gint8"/> </parameter> @@ -2454,10 +2454,10 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async"> + </parameter> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -2472,9 +2472,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -2487,9 +2487,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> @@ -2505,13 +2505,13 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="param" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -2526,9 +2526,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -2541,9 +2541,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -2553,9 +2553,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -2565,10 +2565,10 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> - <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async"> + </parameter> + <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async"> <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/> </parameter> <parameter name="_callback__target" transfer-ownership="none" allow-none="1"> @@ -2583,9 +2583,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="this" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="_res_" transfer-ownership="none"> <type name="Gio.AsyncResult" c:type="GAsyncResult*"/> </parameter> @@ -2598,18 +2598,18 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="param1" transfer-ownership="none"> - <array length="1" c:type="gint*"> + <array length="2" c:type="gint*"> <type name="gint" c:type="gint"/> </array> </parameter> <parameter name="param1_length1" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> - <parameter name="param2" transfer-ownership="none" closure="3" scope="notified" destroy="4"> + <parameter name="param2" transfer-ownership="none" closure="4" scope="notified" destroy="5"> <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/> </parameter> <parameter name="param2_target" transfer-ownership="none" allow-none="1"> @@ -2627,9 +2627,9 @@ <type name="gint" c:type="gint"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -2639,9 +2639,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="value" transfer-ownership="none"> <type name="gint" c:type="gint"/> </parameter> @@ -2654,9 +2654,9 @@ <type name="utf8" c:type="const gchar*"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> </parameters> </callback> </field> @@ -2666,9 +2666,9 @@ <type name="none" c:type="void"/> </return-value> <parameters> - <instance-parameter name="self" transfer-ownership="none"> + <parameter name="self" transfer-ownership="none"> <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/> - </instance-parameter> + </parameter> <parameter name="value" transfer-ownership="none"> <type name="utf8" c:type="const gchar*"/> </parameter> |