summaryrefslogtreecommitdiff
path: root/Cython/Compiler/ModuleNode.py
diff options
context:
space:
mode:
authorEvgeny Golyshev <eugulixes@gmail.com>2016-01-02 20:47:22 +0300
committerEvgeny Golyshev <eugulixes@gmail.com>2016-01-02 20:47:22 +0300
commitb6d9e27e71dd7db1ccf801986ee450731a6d93a2 (patch)
treebc5acfd97e10d3ace37ae576ced0bc769c2d2e51 /Cython/Compiler/ModuleNode.py
parentfbcf496e251527a6381dcd7e16a50e3cbc8161a8 (diff)
downloadcython-b6d9e27e71dd7db1ccf801986ee450731a6d93a2.tar.gz
Hide some parts of stack trace in __PYX_ERR macro
Diffstat (limited to 'Cython/Compiler/ModuleNode.py')
-rw-r--r--Cython/Compiler/ModuleNode.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py
index 0398becf8..c6f6c9c9f 100644
--- a/Cython/Compiler/ModuleNode.py
+++ b/Cython/Compiler/ModuleNode.py
@@ -327,7 +327,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
globalstate.initialize_main_c_code()
h_code = globalstate['h_code']
- self.generate_module_preamble(env, modules, result.embedded_metadata, h_code)
+ self.generate_module_preamble(env, options, modules, result.embedded_metadata, h_code)
globalstate.module_pos = self.pos
globalstate.directives = self.directives
@@ -582,7 +582,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
def _put_setup_code(self, code, name):
code.put(UtilityCode.load_as_string(name, "ModuleSetupCode.c")[1])
- def generate_module_preamble(self, env, cimported_modules, metadata, code):
+ def generate_module_preamble(self, env, options, cimported_modules, metadata, code):
code.put_generated_by()
if metadata:
code.putln("/* BEGIN: Cython Metadata")
@@ -610,6 +610,18 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
self._put_setup_code(code, "CInitCode")
self._put_setup_code(code, "MathInitCode")
+ if options.c_line_in_traceback:
+ cinfo = "%s = %s; " % (Naming.clineno_cname, Naming.line_c_macro)
+ else:
+ cinfo = ""
+ code.put("""
+#define __PYX_ERR(f_index, lineno, Ln_error) \\
+{ \\
+ %s = %s[f_index]; %s = lineno; %sgoto Ln_error; \\
+}
+""" % (Naming.filename_cname, Naming.filetable_cname, Naming.lineno_cname,
+ cinfo))
+
code.put("""
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)