fixed issue with records being size of their reference (8 bytes) not their actual total

This commit is contained in:
Partho
2025-04-14 11:43:49 -04:00
parent 3baa95288a
commit 5c6ab34518
2 changed files with 9 additions and 6 deletions

View File

@ -182,8 +182,9 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
largest = 8;
counter++;
}
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){
offsets[counter] = getRecTotal(getTypeEntry(this));
else if((getAdInfoType(this) == TYPE_RECORD)){
offsets[counter] = 8;
printf("hitting record and adding to largest");
total_size = total_size + offsets[counter];
largest = offsets[counter];
counter++;
@ -202,7 +203,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
}
else {
printdebug(
"[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d",getAdInfoType(this));
"[TYPE CHECK] passed an invalid (first) parameter to a function definition. seeing %d. Type of entry is %s. Name attempted to pass is %s.",getAdInfoType(this),getType(this),getName(this));
return undefined;
}
this = getNextEntry(this);
@ -237,8 +239,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
counter++;
this = getNextEntry(this);
}
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){
int s = getRecTotal(getTypeEntry(this));
else if((getAdInfoType(this) == TYPE_RECORD)){
int s = 8;
if (s > largest) {
largest = s;
}
@ -1365,7 +1367,7 @@ TableNode *getNextEntry(TableNode *tn) {
// Uses pointers to the table node to print the info
TableNode *printTableNode(TableNode *tn) {
if (DEBUG == 0) {
return tn;
return tn;
}
if (tn == NULL) {

View File

@ -48,6 +48,7 @@ foo (x) := {
}
bar1(a,b) := {
[integer : t]
return a * b;
}