diff options
-rw-r--r-- | giscanner/maintransformer.py | 4 | ||||
-rw-r--r-- | tests/scanner/Foo-1.0-expected.gir | 11 | ||||
-rw-r--r-- | tests/scanner/foo.h | 4 |
3 files changed, 19 insertions, 0 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 5493fcd0..59f93e23 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -775,6 +775,8 @@ method or constructor of some type.""" ast.Record, ast.Union, glibast.GLibBoxedOther)): return False + if target.namespace != self._namespace: + return False # A quick hack here...in the future we should catch C signature/GI signature # mismatches in a general way in finaltransformer @@ -829,6 +831,8 @@ method or constructor of some type.""" (origin_node, funcname) = split if not isinstance(origin_node, (ast.Class, glibast.GLibBoxed)): return False + if origin_node.namespace != self._namespace: + return False if isinstance(target, ast.Class): parent = origin_node while parent and (not parent.create_type().target_giname == 'GObject.Object'): diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir index 731b0c02..0c4c2b63 100644 --- a/tests/scanner/Foo-1.0-expected.gir +++ b/tests/scanner/Foo-1.0-expected.gir @@ -318,6 +318,17 @@ and/or use gtk-doc annotations. --> <type name="Object" c:type="FooObject*"/> </return-value> </constructor> + <function name="a_global_method" + c:identifier="foo_object_a_global_method"> + <return-value transfer-ownership="none"> + <type name="none" c:type="void"/> + </return-value> + <parameters> + <parameter name="obj" transfer-ownership="none"> + <type name="Utility.Object" c:type="UtilityObject*"/> + </parameter> + </parameters> + </function> <function name="get_default" c:identifier="foo_object_get_default"> <doc xml:whitespace="preserve">This function is intended to match clutter_stage_get_default which uses a C sugar return type.</doc> diff --git a/tests/scanner/foo.h b/tests/scanner/foo.h index 2d11ba6a..5a67e654 100644 --- a/tests/scanner/foo.h +++ b/tests/scanner/foo.h @@ -415,5 +415,9 @@ struct _FooForeignStruct int foo; }; +/* This one should be a global, not a method on UtilityObject since + * it's a separate namespace. + */ +void foo_object_a_global_method (UtilityObject *obj); #endif /* __FOO_OBJECT_H__ */ |