fixing type checks

This commit is contained in:
Partho
2025-04-27 20:57:30 -04:00
parent d0d38b38e9
commit 94815e237a

View File

@ -564,14 +564,14 @@ simple_statement:
assignable ASSIGN expression assignable ASSIGN expression
{ printdebug("simple statement"); { printdebug("simple statement");
TableNode* node; TableNode* node;
if((getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_FUNCTION_DECLARATION)|| if((getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_FUNCTION_TYPE)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_ARRAY)|| (getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_ARRAY_TYPE)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_RECORD)|| (getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_RECORD_TYPE)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_PRIMITIVE)){ (getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_PRIMITIVE_TYPE)){
node = ((TableNode*)$1); node = ((TableNode*)$1);
} else { } else {
printf("%d\n",getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1)))); printf("%d\n",getAdInfoType((getTypeEntry((TableNode*)$1))));
throw_error(ERROR_TYPE, "Invalid type passed to assignable."); throw_error(ERROR_TYPE, "Invalid type passed to assignable.");
printf("%d, %d\n", @1.first_line, @1.first_column); printf("%d, %d\n", @1.first_line, @1.first_column);
printf("%s\n", getType(getTypeEntry((TableNode*)$1))); printf("%s\n", getType(getTypeEntry((TableNode*)$1)));
@ -998,7 +998,7 @@ assignable:
} }
else if(undefined != table_lookup(getRecList(table_lookup(getAncestor(cur), getName(getTypeEntry((TableNode*)$1)))), $3)) { else if(undefined != table_lookup(getRecList(table_lookup(getAncestor(cur), getName(getTypeEntry((TableNode*)$1)))), $3)) {
TableNode* type = table_lookup(getRecList(table_lookup(getAncestor(cur), getName(getTypeEntry((TableNode*)$1)))), $3); TableNode* type = getTypeEntry(table_lookup(getRecList(table_lookup(getAncestor(cur), getName(getTypeEntry((TableNode*)$1)))), $3));
char* temp = temp_var_gen(); char* temp = temp_var_gen();
int t = -1; int t = -1;
if(getAdInfoType(type) == TYPE_PRIMITIVE_TYPE){ if(getAdInfoType(type) == TYPE_PRIMITIVE_TYPE){