diff options
-rw-r--r-- | giscanner/maintransformer.py | 6 | ||||
-rw-r--r-- | giscanner/message.py | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 1b413ed8..2871abac 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -508,7 +508,11 @@ class MainTransformer(object): elif isinstance(parent, ast.Function) and parent.is_constructor: if isinstance(target, ast.Class): initially_unowned_type = ast.Type(target_giname='GObject.InitiallyUnowned') - initially_unowned = self._transformer.lookup_typenode(initially_unowned_type) + try: + initially_unowned = self._transformer.lookup_typenode(initially_unowned_type) + except KeyError as e: + message.error_node(node, "constructor found but GObject is not in includes") + return None if initially_unowned and self._is_gi_subclass(typeval, initially_unowned_type): return ast.PARAM_TRANSFER_NONE else: diff --git a/giscanner/message.py b/giscanner/message.py index 6392dfc2..a6bdfaa3 100644 --- a/giscanner/message.py +++ b/giscanner/message.py @@ -190,6 +190,8 @@ def warn(text, positions=None, prefix=None, marker_pos=None, marker_line=None): def warn_node(node, text, context=None, positions=None): log_node(WARNING, node, text, context=context, positions=positions) +def error_node(node, text, context=None, positions=None): + log_node(ERROR, node, text, context=context, positions=positions) def warn_symbol(symbol, text): ml = MessageLogger.get() |