diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-27 15:50:52 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-27 15:50:52 +0100 |
commit | 2827d62e8b5790b2d770b9ce54e25cd56e949f20 (patch) | |
tree | cca15628b4649f6d404990ffc1531ac5aeee0225 /py/emitbc.c | |
parent | 36cbd0db7e4f297c8fc729c842b171af2cfd04c7 (diff) |
py: Implement keyword-only args.
Implements 'def f(*, a)' and 'def f(*a, b)', but not default
keyword-only args, eg 'def f(*, a=1)'.
Partially addresses issue #524.
Diffstat (limited to 'py/emitbc.c')
-rw-r--r-- | py/emitbc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/py/emitbc.c b/py/emitbc.c index f58cec1f1..3e3f0751c 100644 --- a/py/emitbc.c +++ b/py/emitbc.c @@ -300,14 +300,14 @@ STATIC void emit_bc_end_pass(emit_t *emit) { emit->code_base = m_new0(byte, emit->code_info_size + emit->byte_code_size); } else if (emit->pass == PASS_3) { - qstr *arg_names = m_new(qstr, emit->scope->num_params); - for (int i = 0; i < emit->scope->num_params; i++) { + qstr *arg_names = m_new(qstr, emit->scope->num_pos_args + emit->scope->num_kwonly_args); + for (int i = 0; i < emit->scope->num_pos_args + emit->scope->num_kwonly_args; i++) { arg_names[i] = emit->scope->id_info[i].qstr; } mp_emit_glue_assign_byte_code(emit->scope->raw_code, emit->code_base, emit->code_info_size + emit->byte_code_size, - emit->scope->num_params, emit->scope->num_locals, - emit->scope->scope_flags, arg_names); + emit->scope->num_pos_args, emit->scope->num_kwonly_args, arg_names, + emit->scope->scope_flags); } } |