diff options
author | Evgeny Golyshev <eugulixes@gmail.com> | 2016-01-02 20:47:22 +0300 |
---|---|---|
committer | Evgeny Golyshev <eugulixes@gmail.com> | 2016-01-02 20:47:22 +0300 |
commit | b6d9e27e71dd7db1ccf801986ee450731a6d93a2 (patch) | |
tree | bc5acfd97e10d3ace37ae576ced0bc769c2d2e51 /Cython/Compiler/ModuleNode.py | |
parent | fbcf496e251527a6381dcd7e16a50e3cbc8161a8 (diff) | |
download | cython-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.py | 16 |
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) |