summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--giscanner/maintransformer.py6
-rw-r--r--giscanner/message.py2
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()