diff options
author | Dan Winship <danw@gnome.org> | 2012-05-26 20:19:39 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2012-05-26 20:23:52 -0400 |
commit | 44cf78baf6496835abbf3c092895c2a46a2d4ef0 (patch) | |
tree | 48893535ca6ae33d3d989e53b382196b2c3d30f3 /tests | |
parent | 6e25b3849692cd9afcfbb4152e7e8e213fd37917 (diff) | |
download | gobject-introspection-44cf78baf6496835abbf3c092895c2a46a2d4ef0.tar.gz |
scanner: allow for functions that look like constructors but aren't
If the scanner found a function with _new in its name, but not
prefixed by the name of a known type, it would assume that the
function was a constructor, and then complain that it couldn't figure
out what it was a constructor for, and mark it introspectable=0.
Instead, just assume that the function is not actually a constructor
in that case (unless it's explicitly tagged as such).
https://bugzilla.gnome.org/show_bug.cgi?id=676815
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scanner/Foo-1.0-expected.gir | 8 | ||||
-rw-r--r-- | tests/scanner/foo.c | 14 | ||||
-rw-r--r-- | tests/scanner/foo.h | 2 |
3 files changed, 24 insertions, 0 deletions
diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir index 15be459a..b18375a1 100644 --- a/tests/scanner/Foo-1.0-expected.gir +++ b/tests/scanner/Foo-1.0-expected.gir @@ -1054,6 +1054,14 @@ exposed to language bindings.</doc> </parameter> </parameters> </function> + <function name="not_a_constructor_new" + c:identifier="foo_not_a_constructor_new"> + <doc xml:whitespace="preserve">This should be scanned as a top-level function, and shouldn't cause +a "Can't find matching type for constructor" warning.</doc> + <return-value transfer-ownership="none"> + <type name="Object" c:type="FooObject*"/> + </return-value> + </function> <function name="rectangle_new" c:identifier="foo_rectangle_new" moved-to="Rectangle.new" diff --git a/tests/scanner/foo.c b/tests/scanner/foo.c index fb20c7a6..f8cc350b 100644 --- a/tests/scanner/foo.c +++ b/tests/scanner/foo.c @@ -782,3 +782,17 @@ foo_object_append_new_stack_layer (FooObject *obj, int x) { return NULL; } + +/** + * foo_not_a_constructor_new: + * + * This should be scanned as a top-level function, and shouldn't cause + * a "Can't find matching type for constructor" warning. + * + * Returns: (transfer none): + */ +FooObject * +foo_not_a_constructor_new (void) +{ + return NULL; +} diff --git a/tests/scanner/foo.h b/tests/scanner/foo.h index 270ee214..f852083c 100644 --- a/tests/scanner/foo.h +++ b/tests/scanner/foo.h @@ -162,6 +162,8 @@ void foo_buffer_some_method (FooBuffer *buffer); GType foo_other_object_get_type (void) G_GNUC_CONST; +FooObject * foo_not_a_constructor_new (void); + typedef enum { FOO_ENUM_ALPHA, |