diff options
author | Dieter Verfaillie <dieterv@optionexplicit.be> | 2013-01-09 17:20:11 +0100 |
---|---|---|
committer | Dieter Verfaillie <dieterv@optionexplicit.be> | 2013-05-07 23:38:11 +0200 |
commit | a031129d8ab28e2f51e95e7266f1274bdc592557 (patch) | |
tree | 988b2d14f40218efd13d353b7f8b574a451d46bc | |
parent | 348c72ae1a67fee6221445b9bbb491d0c2c5b37d (diff) | |
download | gobject-introspection-a031129d8ab28e2f51e95e7266f1274bdc592557.tar.gz |
giscanner: emit 'incorrect number of parameters in comment block' warning
instead of silently ignoring parameter names on signals when the
number of parameters doesn't match our expectations.
https://bugzilla.gnome.org/show_bug.cgi?id=697623
-rw-r--r-- | giscanner/maintransformer.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 28ffed36..8292f8eb 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -780,20 +780,26 @@ usage is void (*_gtk_reserved1)(void);""" prop.type = self._resolve_toplevel(type_tag.value, prop.type, prop, parent) def _apply_annotations_signal(self, parent, signal): + names = [] prefix = self._get_annotation_name(parent) block = self._blocks.get('%s::%s' % (prefix, signal.name)) - 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 - if block and len(block.params) > len(signal.parameters): - names = block.params.items() - # Resolve real parameter names early, so that in later - # phase we can refer to them while resolving annotations. - for i, param in enumerate(signal.parameters): - param.argname, tag = names[i+1] - else: - names = [] + + 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 + if len(block.params) > len(signal.parameters): + names = block.params.items() + # Resolve real parameter names early, so that in later + # phase we can refer to them while resolving annotations. + for i, param in enumerate(signal.parameters): + param.argname, tag = names[i+1] + else: + message.warn("incorrect number of parameters in comment block, " + "parameter annotations will be ignored.", block.position) + for i, param in enumerate(signal.parameters): if names: name, tag = names[i+1] |