summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--giscanner/maintransformer.py4
-rw-r--r--tests/scanner/Foo-1.0-expected.gir11
-rw-r--r--tests/scanner/foo.h4
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__ */