diff options
author | Robert Bradshaw <robertwb@gmail.com> | 2016-02-02 00:10:49 -0800 |
---|---|---|
committer | Robert Bradshaw <robertwb@gmail.com> | 2016-02-02 00:10:49 -0800 |
commit | 26589357ea3f5192346a27286843b287c744c161 (patch) | |
tree | f91a1dd4d968f546f1566aa1d75dc0f78d094722 /Cython/Compiler/ModuleNode.py | |
parent | eff599d2eef26bbe182f37d1c22d9751d183e14e (diff) | |
parent | b6d9e27e71dd7db1ccf801986ee450731a6d93a2 (diff) | |
download | cython-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.py | 16 |
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) |