X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=templates%2Ffunction_definition.c;h=24c73f801488bfea3154bb0591f4e23badc88c38;hp=0c60f3082eef5c77a1f9659945928bc7a87c6db5;hb=8d6f07b43d8b41473fb7d8779bbc7a5843adcd7b;hpb=cfb4e75abc7682119ab133e0d1e5a8cfb4068ee9 diff --git a/templates/function_definition.c b/templates/function_definition.c index 0c60f30..24c73f8 100644 --- a/templates/function_definition.c +++ b/templates/function_definition.c @@ -1,14 +1,12 @@ -Object user${{name}}$implementation(EnvironmentPool* environmentPool, Environment* parent, size_t argc, Object* args) +Object user${{name}}$implementation(EnvironmentPool* environmentPool, Environment* parent, size_t argc, Stack* stack) { - assert(argc == {{ argument_name_list|length }}); - Environment* environment = EnvironmentPool_allocate(environmentPool); Environment_initialize(environment, parent); Object result = builtin$nil; - {% for argument_name in argument_name_list %} - Environment_set(environment, "{{ argument_name }}", args[{{ loop.index0 }}]); + {% for argument_name in argument_name_list|reverse %} + Environment_set(environment, "{{ argument_name }}", Stack_pop(stack)); {% endfor %} {% for statement in statement_list %}