summaryrefslogtreecommitdiff
path: root/src/runner
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-04 02:04:51 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-04-04 02:04:51 +0330
commit5c0542111e67d60490c7e218b985d6c6b9eaf9f2 (patch)
tree8f261ef4cb17dbb6fe5e46af2ba18f836d55caf6 /src/runner
parent052ff9cc03544f29e1c3c79f09b6b0f3fb989532 (diff)
arg names are in function types now
Diffstat (limited to 'src/runner')
-rw-r--r--src/runner/runner.c56
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;