Partial fix for #307, see ticket
authorDag Sverre Seljebotn <dagss@student.matnat.uio.no>
Tue, 7 Jul 2009 08:07:22 +0000 (10:07 +0200)
committerDag Sverre Seljebotn <dagss@student.matnat.uio.no>
Tue, 7 Jul 2009 08:07:22 +0000 (10:07 +0200)
Cython/Compiler/ExprNodes.py
tests/errors/callingnonexisting_T307.pyx [new file with mode: 0644]

index cb59255e10fdfc4e6ab5124ec7e44adb438d2797..1922db255530e4a1bff3d82aa96c0886484c7d40 100644 (file)
@@ -2578,6 +2578,9 @@ class GeneralCallNode(CallNode):
         if self.starstar_arg:
             self.starstar_arg.analyse_types(env)
         if not self.function.type.is_pyobject:
+            if self.function.type.is_error:
+                self.type = error_type
+                return error_type
             if hasattr(self.function, 'entry') and not self.function.entry.as_variable:
                 error(self.pos, "Keyword arguments not allowed in cdef functions.")
             else:
@@ -2592,6 +2595,7 @@ class GeneralCallNode(CallNode):
         self.is_temp = 1
         
     def generate_result_code(self, code):
+        if self.type.is_error: return
         if self.keyword_args and self.starstar_arg:
             code.put_error_if_neg(self.pos, 
                 "PyDict_Update(%s, %s)" % (
diff --git a/tests/errors/callingnonexisting_T307.pyx b/tests/errors/callingnonexisting_T307.pyx
new file mode 100644 (file)
index 0000000..b66f646
--- /dev/null
@@ -0,0 +1,5 @@
+nonexisting(3, with_kw_arg=4)
+
+_ERRORS = u"""
+1:11: undeclared name not builtin: nonexisting
+"""