aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-06-13 21:17:00 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-06-13 21:17:00 +0330
commit4f0e7d81333f0e5f5cf3c5ff6c88bfed9648962b (patch)
treeee1aa21c196ff07ebca7e854d83db0b11951a2e9 /src
parent9abd643b6168ec3bf85ccc6d819162cdd799299b (diff)
fix bug in shape shifters
Diffstat (limited to 'src')
-rw-r--r--src/compiler/ast-tree.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c
index f2b3ca3..280b820 100644
--- a/src/compiler/ast-tree.c
+++ b/src/compiler/ast-tree.c
@@ -1309,7 +1309,6 @@ AstTree *copyAstTreeBack(AstTree *tree, AstTreeVariables oldVariables[],
copyAstTreeBack(metadata->generateds.calls[i].data[j].value,
oldVariables, newVariables, variables_size, false);
}
- new_metadata->generateds.calls[i] = metadata->generateds.calls[i];
}
return newAstTree(tree->token, new_metadata,
@@ -6064,7 +6063,7 @@ bool setTypesFunctionCall(AstTree *tree, AstTreeSetTypesHelper _helper) {
AstTreeFunction *function =
copyAstTreeFunction(macro->function, NULL, NULL, 0, true);
- if (!setTypesAstFunction(function,NULL, helper)) {
+ if (!setTypesAstFunction(function, NULL, helper)) {
astTreeFunctionDestroy(*function);
free(function);
return false;
@@ -8108,7 +8107,7 @@ AstTreeVariable *setTypesFindVariable(const char *name_begin,
AstTreeFunction *function =
copyAstTreeFunction(macro->function, NULL, NULL, 0, true);
- if (!setTypesAstFunction(function,NULL, helper)) {
+ if (!setTypesAstFunction(function, NULL, helper)) {
astTreeFunctionDestroy(*function);
free(function);
return NULL;
@@ -8238,8 +8237,9 @@ AstTree *getShapeShifterElement(AstTreeFunctionCall *metadata,
for (size_t i = 0; i < shapeShifter->generateds.size; ++i) {
AstTreeFunctionCallParams call = shapeShifter->generateds.calls[i];
- if (metadata->parameters.size != call.size)
+ if (metadata->parameters.size != call.size) {
continue;
+ }
for (size_t i = 0; i < metadata->parameters.size; ++i) {
AstTreeFunctionCallParam p0 = metadata->parameters.data[i];
@@ -8301,18 +8301,19 @@ AstTree *getShapeShifterElement(AstTreeFunctionCall *metadata,
newHelper.variables.size += 1;
}
- if (!setTypesAstFunction(newFunction,NULL, helper)) {
+ if (!setTypesAstFunction(newFunction, NULL, helper)) {
return NULL;
}
size_t generateds_size =
- a404m_malloc_usable_size(shapeShifter->generateds.functions) /
- sizeof(*shapeShifter->generateds.functions);
+ a404m_malloc_usable_size(shapeShifter->generateds.calls) /
+ sizeof(*shapeShifter->generateds.calls);
if (generateds_size == shapeShifter->generateds.size) {
generateds_size += generateds_size / 2 + 1;
shapeShifter->generateds.functions = a404m_realloc(
shapeShifter->generateds.functions,
generateds_size * sizeof(*shapeShifter->generateds.functions));
+ printLog("%ld", generateds_size);
shapeShifter->generateds.calls = a404m_realloc(
shapeShifter->generateds.calls,
generateds_size * sizeof(*shapeShifter->generateds.calls));
@@ -8340,7 +8341,7 @@ AstTree *getShapeShifterElement(AstTreeFunctionCall *metadata,
.nameBegin = metadata->parameters.data[i].nameBegin;
shapeShifter->generateds.calls[shapeShifter->generateds.size]
.data[i]
- .nameBegin = metadata->parameters.data[i].nameEnd;
+ .nameEnd = metadata->parameters.data[i].nameEnd;
}
element_index = shapeShifter->generateds.size;