diff options
-rw-r--r-- | giscanner/codegen.py | 9 | ||||
-rw-r--r-- | giscanner/maintransformer.py | 7 | ||||
-rw-r--r-- | tests/warn/Makefile.am | 1 | ||||
-rw-r--r-- | tests/warn/invalid-return.h | 19 |
4 files changed, 31 insertions, 5 deletions
diff --git a/giscanner/codegen.py b/giscanner/codegen.py index ff1a435a..0d4a8d8b 100644 --- a/giscanner/codegen.py +++ b/giscanner/codegen.py @@ -108,10 +108,11 @@ class CCodeGenerator(object): self._write_annotation_transfer(param) self.out_c.write(":\n") self.out_c.write(' *\n') - self.out_c.write(' * Undocumented.\n') - self.out_c.write(' *\n') - self.out_c.write(' * Returns:') - self._write_annotation_transfer(func.retval) + self.out_c.write(' * Undocumented.') + if func.retval.type != ast.TYPE_NONE: + self.out_c.write('\n *\n') + self.out_c.write(' * Returns: ') + self._write_annotation_transfer(func.retval) self.out_c.write('\n */') @contextmanager diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 872395a0..bb79a5b3 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -784,6 +784,12 @@ class MainTransformer(object): tag = block.tags.get(TAG_RETURNS) else: tag = None + + if tag is not None and return_.type == ast.TYPE_NONE: + message.warn('%s: invalid return annotation' % (block.name,), + tag.position) + tag = None + self._apply_annotations_param_ret_common(parent, return_, tag) def _apply_annotations_params(self, parent, params, block): @@ -871,7 +877,6 @@ class MainTransformer(object): if block: self._apply_annotations_annotated(signal, block) - # We're only attempting to name the signal parameters if # the number of parameters (@foo) is the same or greater # than the number of signal parameters diff --git a/tests/warn/Makefile.am b/tests/warn/Makefile.am index fb7e989d..5f47df0a 100644 --- a/tests/warn/Makefile.am +++ b/tests/warn/Makefile.am @@ -14,6 +14,7 @@ TESTS = \ invalid-option.h \ invalid-optional.h \ invalid-out.h \ + invalid-return.h \ invalid-transfer.h \ missing-element-type.h \ return-gobject.h \ diff --git a/tests/warn/invalid-return.h b/tests/warn/invalid-return.h new file mode 100644 index 00000000..c033b767 --- /dev/null +++ b/tests/warn/invalid-return.h @@ -0,0 +1,19 @@ +#include "common.h" + +/** + * TestInvalidReturnCallback: + * + * Returns: + */ +typedef void (*TestInvalidReturnCallback) (void); + +// EXPECT:6: Warning: Test: TestInvalidReturnCallback: invalid return annotation + +/** + * test_invalid_return: + * + * Returns: + */ +void test_invalid_return (void); + +// EXPECT:15: Warning: Test: test_invalid_return: invalid return annotation |