-Object user${{function_definition.name}}$implementation(EnvironmentPool* environmentPool, Environment* parent, size_t argc, Object* args)
-{
- assert(argc == {{ function_definition.argument_name_list|length }});
-
- Environment* environment = EnvironmentPool_allocate(environmentPool);
- Environment_initialize(environment, parent);
-
- {% for argument_name in function_definition.argument_name_list %}
- Environment_set(environment, "{{ argument_name }}", args[{{ loop.index0 }}]);
- {% endfor %}
-
- {% for statement in function_definition.statement_list[:-1] %}
- {{ generate_statement(statement) }}
- {% endfor %}
-
- Object result = {{ generate_statement(function_definition.statement_list[-1]) }}
-
- Environment_setLive(environment, false);
- return result;
-}
-