diff options
author | Robert Bradshaw <robertwb@gmail.com> | 2017-07-10 21:40:44 -0700 |
---|---|---|
committer | Robert Bradshaw <robertwb@gmail.com> | 2017-07-10 22:14:36 -0700 |
commit | c824a3822c8b37dc49e23d9ed82036a5565075c1 (patch) | |
tree | c4f702d43fd1d847adbe87ab47d9baaaf6185b55 | |
parent | 866c3e8a178a9ef32ea084e6d700a054cce921dc (diff) | |
download | cython-c824a3822c8b37dc49e23d9ed82036a5565075c1.tar.gz |
Fix #1767
-rw-r--r-- | Cython/Compiler/Nodes.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 0d6da858f..17cbfe78b 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -3621,10 +3621,12 @@ class DefNodeWrapper(FuncDefNode): reversed_args = list(enumerate(positional_args))[::-1] for i, arg in reversed_args: if i >= min_positional_args-1: + if i != reversed_args[0][0]: + code.putln('CYTHON_FALLTHROUGH;') code.put('case %2d: ' % (i+1)) code.putln("values[%d] = PyTuple_GET_ITEM(%s, %d);" % (i, Naming.args_cname, i)) - code.putln('CYTHON_FALLTHROUGH;') if min_positional_args == 0: + code.putln('CYTHON_FALLTHROUGH;') code.put('case 0: ') code.putln('break;') if self.star_arg: @@ -3781,6 +3783,8 @@ class DefNodeWrapper(FuncDefNode): if self.star_arg and i == max_positional_args: code.putln('default:') else: + if i != 0: + code.putln('CYTHON_FALLTHROUGH;') code.putln('case %2d:' % i) pystring_cname = code.intern_identifier(arg.name) if arg.default: @@ -3819,8 +3823,6 @@ class DefNodeWrapper(FuncDefNode): self.name, pystring_cname)) code.putln(code.error_goto(self.pos)) code.putln('}') - if max_positional_args > 0 and i < last_required_arg: - code.putln('CYTHON_FALLTHROUGH;') if max_positional_args > 0: code.putln('}') |