diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-04 02:04:51 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-04 02:04:51 +0330 |
commit | 5c0542111e67d60490c7e218b985d6c6b9eaf9f2 (patch) | |
tree | 8f261ef4cb17dbb6fe5e46af2ba18f836d55caf6 /src/runner | |
parent | 052ff9cc03544f29e1c3c79f09b6b0f3fb989532 (diff) |
arg names are in function types now
Diffstat (limited to 'src/runner')
-rw-r--r-- | src/runner/runner.c | 56 |
1 files changed, 2 insertions, 54 deletions
diff --git a/src/runner/runner.c b/src/runner/runner.c index 9e82a6c..f228846 100644 --- a/src/runner/runner.c +++ b/src/runner/runner.c @@ -67,63 +67,11 @@ AstTree *runAstTreeFunction(AstTree *tree, AstTreeFunctionCallParam *arguments, bool shouldRet = false; - bool initedArguments[function->arguments.size]; - size_t initedArguments_size = function->arguments.size; - - for (size_t i = 0; i < initedArguments_size; ++i) { - initedArguments[i] = false; - } - for (size_t i = 0; i < arguments_size; ++i) { AstTreeFunctionCallParam param = arguments[i]; - if (param.nameBegin != param.nameEnd) { - const size_t param_name_size = param.nameEnd - param.nameBegin; - for (size_t j = 0; j < function->arguments.size; ++j) { - AstTreeVariable *arg = function->arguments.data[j]; - if ((size_t)(arg->name_end - arg->name_begin) == param_name_size && - strncmp(arg->name_begin, param.nameBegin, param_name_size) == 0) { - initedArguments[j] = true; - - AstTree *value = runExpression(param.value, &shouldRet); - runnerVariableSetValue(arg, value); - goto END_OF_NAMED_FOR; - } - } - printError(param.value->str_begin, param.value->str_end, - "Argument not found"); - UNREACHABLE; - } - END_OF_NAMED_FOR: - } - - for (size_t i = 0; i < arguments_size; ++i) { - AstTreeFunctionCallParam param = arguments[i]; - if (param.nameBegin == param.nameEnd) { - for (size_t j = 0; j < function->arguments.size; ++j) { - AstTreeVariable *arg = function->arguments.data[j]; - if (!initedArguments[j]) { - initedArguments[j] = true; - - AstTree *value = runExpression(param.value, &shouldRet); - runnerVariableSetValue(arg, value); - goto END_OF_UNNAMED_FOR; - } - } - printError(param.value->str_begin, param.value->str_end, - "Too many arguments"); - UNREACHABLE; - } - END_OF_UNNAMED_FOR: - } - - for (size_t i = 0; i < function->arguments.size; ++i) { AstTreeVariable *arg = function->arguments.data[i]; - if (!initedArguments[i]) { - if (arg->value == NULL) { - printError(arg->name_begin, arg->name_end, - "Argument is not initialized"); - } - } + AstTree *value = runExpression(param.value, &shouldRet); + runnerVariableSetValue(arg, value); } shouldRet = false; |