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; largest = 8;
counter++; counter++;
} }
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){ else if((getAdInfoType(this) == TYPE_RECORD)){
offsets[counter] = getRecTotal(getTypeEntry(this)); offsets[counter] = 8;
printf("hitting record and adding to largest");
total_size = total_size + offsets[counter]; total_size = total_size + offsets[counter];
largest = offsets[counter]; largest = offsets[counter];
counter++; counter++;
@ -202,7 +203,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
} }
else { else {
printdebug( 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; return undefined;
} }
this = getNextEntry(this); this = getNextEntry(this);
@ -237,8 +239,8 @@ TableNode *setRecOffsetInfo(SymbolTable* scope, TableNode *node) {
counter++; counter++;
this = getNextEntry(this); this = getNextEntry(this);
} }
else if((getAdInfoType(this) == TYPE_RECORD) && (node != getTypeEntry(this))){ else if((getAdInfoType(this) == TYPE_RECORD)){
int s = getRecTotal(getTypeEntry(this)); int s = 8;
if (s > largest) { if (s > largest) {
largest = s; largest = s;
} }

View File

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