diff --git a/src/compiler/compiler.c b/src/compiler/compiler.c index 641bcf89..e035ff77 100644 --- a/src/compiler/compiler.c +++ b/src/compiler/compiler.c @@ -1071,7 +1071,12 @@ void CallExpr__emit_(Expr* self_, Ctx* ctx) { c11__foreach(Expr*, &self->args, e) { vtemit_(*e, ctx); } c11__foreach(CallExprKwArg, &self->kwargs, e) { - Ctx__emit_name(ctx, e->key, self->line); + if(e->key == 0) { + // special key for **kwargs + Ctx__emit_int(ctx, 0, self->line); + } else { + Ctx__emit_name(ctx, e->key, self->line); + } vtemit_(e->val, ctx); } int KWARGC = self->kwargs.length; @@ -1221,7 +1226,10 @@ static int Ctx__add_varname(Ctx* self, py_Name name) { return CodeObject__add_varname(self->co, name); } -static int Ctx__add_name(Ctx* self, py_Name name) { return CodeObject__add_name(self->co, name); } +static int Ctx__add_name(Ctx* self, py_Name name) { + assert(name != 0); + return CodeObject__add_name(self->co, name); +} static int Ctx__add_const_string(Ctx* self, c11_sv key) { if(key.size > 100) {