diff options
-rw-r--r-- | giscanner/maintransformer.py | 11 | ||||
-rw-r--r-- | tests/scanner/Regress-1.0-expected.gir | 35 | ||||
-rw-r--r-- | tests/scanner/Utility-1.0-expected.gir | 6 |
3 files changed, 20 insertions, 32 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 5ea1f5b4..b4b39345 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -1451,14 +1451,15 @@ method or constructor of some type.""" param.argname is not None and param.argname.endswith('data')): callback_param.closure_name = param.argname - param.closure_name = param.argname for param in params: # By convention, closure user_data parameters are always nullable. - if param.closure_name is not None and \ - param.closure_name == param.argname and \ - not param.not_nullable: - param.nullable = True + if param.closure_name is not None: + idx = node.get_parameter_index(param.closure_name) + assert idx >= 0 + closure_param = params[idx] + if not closure_param.not_nullable: + closure_param.nullable = True def _pass3_callable_throws(self, node): """Check to see if we have anything that looks like a diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index dfbbd8d5..620a2907 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -387,8 +387,7 @@ are zero-terminated</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <doc xml:space="preserve">Callback user data</doc> <type name="gpointer" c:type="gpointer"/> </parameter> @@ -739,8 +738,7 @@ regress_annotation_object_watch_full().</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <doc xml:space="preserve">The callback data</doc> <type name="gpointer" c:type="gpointer"/> </parameter> @@ -770,8 +768,7 @@ regress_annotation_object_watch_full().</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <doc xml:space="preserve">The callback data</doc> <type name="gpointer" c:type="gpointer"/> </parameter> @@ -1868,8 +1865,7 @@ exposed to language bindings.</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> @@ -2927,8 +2923,7 @@ use it should be.</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> <parameter name="notify" transfer-ownership="none" scope="async"> @@ -4309,8 +4304,7 @@ detection, and fixing it via annotations.</doc> <parameter name="data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="2"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> @@ -4507,8 +4501,7 @@ detection, and fixing it via annotations.</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="2"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> @@ -4529,8 +4522,7 @@ detection, and fixing it via annotations.</doc> <parameter name="data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> <parameter name="destroy" transfer-ownership="none" scope="async"> @@ -5404,8 +5396,7 @@ libgnome-keyring.</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> @@ -5429,8 +5420,7 @@ is invoked.</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="1"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> <parameter name="notify" transfer-ownership="none" scope="async"> @@ -5501,7 +5491,7 @@ call and can be released on return.</doc> <type name="TestCallbackUserData" c:type="RegressTestCallbackUserData"/> </parameter> - <parameter name="user_data" transfer-ownership="none" closure="1"> + <parameter name="user_data" transfer-ownership="none"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> @@ -6513,8 +6503,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="2"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> <parameter name="notify" transfer-ownership="none" scope="async"> diff --git a/tests/scanner/Utility-1.0-expected.gir b/tests/scanner/Utility-1.0-expected.gir index 38b6a3cb..7eea9f77 100644 --- a/tests/scanner/Utility-1.0-expected.gir +++ b/tests/scanner/Utility-1.0-expected.gir @@ -100,8 +100,7 @@ and/or use gtk-doc annotations. --> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="2"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> <parameter name="destroy" transfer-ownership="none" scope="async"> @@ -180,8 +179,7 @@ and/or use gtk-doc annotations. --> <parameter name="user_data" transfer-ownership="none" nullable="1" - allow-none="1" - closure="2"> + allow-none="1"> <type name="gpointer" c:type="gpointer"/> </parameter> </parameters> |