From afb5538e832d7772b5149c899e78ccb8edf2dde3 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Sun, 1 Oct 2017 20:27:02 +0100 Subject: Default procedure values for `proc` --- src/ir.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index 9a18f9195..2c874584f 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -7422,6 +7422,22 @@ void ir_build_proc(irValue *value, irProcedure *parent) { proc->module->stmt_state_flags = prev_stmt_state_flags; } + + + if (proc->type->Proc.has_proc_default_values) { + auto *p = &proc->type->Proc; + for_array(i, p->params->Tuple.variables) { + Entity *f = p->params->Tuple.variables[i]; + if (f->kind == Entity_Variable && f->Variable.default_value.kind == ExactValue_Procedure) { + AstNode *expr = f->Variable.default_value.value_procedure; + GB_ASSERT(expr != nullptr); + if (expr->kind == AstNode_ProcLit) { + ir_gen_anonymous_proc_lit(proc->module, proc->name, expr, proc); + } + } + } + } + } -- cgit v1.2.3