summaryrefslogtreecommitdiff
path: root/Cython/Compiler/ModuleNode.py
diff options
context:
space:
mode:
authorRobert Bradshaw <robertwb@gmail.com>2016-02-02 00:10:49 -0800
committerRobert Bradshaw <robertwb@gmail.com>2016-02-02 00:10:49 -0800
commit26589357ea3f5192346a27286843b287c744c161 (patch)
treef91a1dd4d968f546f1566aa1d75dc0f78d094722 /Cython/Compiler/ModuleNode.py
parenteff599d2eef26bbe182f37d1c22d9751d183e14e (diff)
parentb6d9e27e71dd7db1ccf801986ee450731a6d93a2 (diff)
downloadcython-26589357ea3f5192346a27286843b287c744c161.tar.gz
Merge pull request #478 from eugulixes/__PYX_ERR
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 158e82e17..83e9c8b36 100644
--- a/Cython/Compiler/ModuleNode.py
+++ b/Cython/Compiler/ModuleNode.py
@@ -335,7 +335,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
@@ -590,7 +590,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")
@@ -618,6 +618,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)