fixed issue with records being size of their reference (8 bytes) not their actual total
This commit is contained in:
@ -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) {
|
||||
|
@ -48,6 +48,7 @@ foo (x) := {
|
||||
}
|
||||
|
||||
bar1(a,b) := {
|
||||
[integer : t]
|
||||
return a * b;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user