summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-18 21:46:27 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-18 21:46:27 +0330
commit9eb9be33d7623a4759b0794073bd32489b865b3d (patch)
tree95591f2f9dc79215f7cbd35b2ab6c46efeac288d /src/compiler
parent7903ae7711f323697bbc42ad756c8ea0138c70dc (diff)
add plus minus to floats
fix memory leaks
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/ast-tree.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c
index 9347303..66a5f6b 100644
--- a/src/compiler/ast-tree.c
+++ b/src/compiler/ast-tree.c
@@ -416,7 +416,8 @@ void astTreeDestroy(AstTree tree) {
case AST_TREE_TOKEN_VARIABLE_DEFINE:
return;
case AST_TREE_TOKEN_VALUE_FLOAT: {
- free(tree.metadata);
+ AstTreeFloat *metadata = tree.metadata;
+ free(metadata);
return;
}
case AST_TREE_TOKEN_OPERATOR_PLUS:
@@ -2119,7 +2120,7 @@ bool setTypesValueInt(AstTree *tree, AstTreeSetTypesHelper helper) {
AstTreeInt value = (AstTreeInt)tree->metadata;
f16 newValue = value;
tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2129,7 +2130,7 @@ bool setTypesValueInt(AstTree *tree, AstTreeSetTypesHelper helper) {
AstTreeInt value = (AstTreeInt)tree->metadata;
f32 newValue = value;
tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2139,7 +2140,7 @@ bool setTypesValueInt(AstTree *tree, AstTreeSetTypesHelper helper) {
AstTreeInt value = (AstTreeInt)tree->metadata;
f64 newValue = value;
tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2149,7 +2150,7 @@ bool setTypesValueInt(AstTree *tree, AstTreeSetTypesHelper helper) {
AstTreeInt value = (AstTreeInt)tree->metadata;
f128 newValue = value;
tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2165,8 +2166,7 @@ bool setTypesValueFloat(AstTree *tree, AstTreeSetTypesHelper helper) {
tree->token = AST_TREE_TOKEN_VALUE_FLOAT;
AstTreeFloat value = *(AstTreeFloat *)tree->metadata;
f16 newValue = value;
- tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2175,9 +2175,8 @@ bool setTypesValueFloat(AstTree *tree, AstTreeSetTypesHelper helper) {
tree->token = AST_TREE_TOKEN_VALUE_FLOAT;
AstTreeFloat value = *(AstTreeFloat *)tree->metadata;
f32 newValue = value;
- tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
- if (value - newValue != 0) {
+ *(AstTreeFloat *)tree->metadata = value;
+ if (value != newValue) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
tree->type = &AST_TREE_F32_TYPE;
@@ -2185,8 +2184,7 @@ bool setTypesValueFloat(AstTree *tree, AstTreeSetTypesHelper helper) {
tree->token = AST_TREE_TOKEN_VALUE_FLOAT;
AstTreeFloat value = *(AstTreeFloat *)tree->metadata;
f64 newValue = value;
- tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}
@@ -2195,8 +2193,7 @@ bool setTypesValueFloat(AstTree *tree, AstTreeSetTypesHelper helper) {
tree->token = AST_TREE_TOKEN_VALUE_FLOAT;
AstTreeFloat value = *(AstTreeFloat *)tree->metadata;
f128 newValue = value;
- tree->metadata = a404m_malloc(sizeof(f128));
- *(f128 *)tree->metadata = value;
+ *(AstTreeFloat *)tree->metadata = value;
if (value - newValue != 0) {
printWarning(tree->str_begin, tree->str_end, "Value is overflowing");
}