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
{ printdebug("simple statement");
TableNode* node;
if((getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_FUNCTION_DECLARATION)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_ARRAY)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_RECORD)||
(getAdInfoType(getTypeEntry(getTypeEntry((TableNode*)$1))) == TYPE_PRIMITIVE)){
if((getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_FUNCTION_TYPE)||
(getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_ARRAY_TYPE)||
(getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_RECORD_TYPE)||
(getAdInfoType((getTypeEntry((TableNode*)$1))) == TYPE_PRIMITIVE_TYPE)){
node = ((TableNode*)$1);
} 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.");
printf("%d, %d\n", @1.first_line, @1.first_column);
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)) {
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();
int t = -1;
if(getAdInfoType(type) == TYPE_PRIMITIVE_TYPE){