|
@@ -177,7 +177,7 @@ static DataType cExpression();
|
|
|
static void cCallFunctionArguments(Function* f) {
|
|
|
while(!cConsumeTokenIf(T_CLOSE_BRACKET)) {
|
|
|
DataType dt = cExpression();
|
|
|
- if(fAddArgument(f, dt)) {
|
|
|
+ if(fAddArgument(f, dt, &structs)) {
|
|
|
cTooMuchArguments();
|
|
|
}
|
|
|
if(cConsumeTokenIf(T_COMMA) && tPeekToken() == T_CLOSE_BRACKET) {
|
|
@@ -595,7 +595,7 @@ static void cDeclareStruct(Struct* st) {
|
|
|
if(v != NULL) {
|
|
|
cDeclared(var);
|
|
|
}
|
|
|
- vAdd(&vars, var, dtStruct(st));
|
|
|
+ vAdd(&vars, var, dtStruct(st), &structs);
|
|
|
int varLength = strlen(var);
|
|
|
for(int i = 0; i < st->amount; i++) {
|
|
|
int length = strlen(st->vars[i].name);
|
|
@@ -603,7 +603,7 @@ static void cDeclareStruct(Struct* st) {
|
|
|
memcpy(fullName, var, varLength);
|
|
|
fullName[varLength] = '.';
|
|
|
memcpy(fullName + varLength + 1, st->vars[i].name, length + 1);
|
|
|
- vAdd(&vars, fullName, st->vars[i].type);
|
|
|
+ vAdd(&vars, fullName, st->vars[i].type, &structs);
|
|
|
free(fullName);
|
|
|
}
|
|
|
}
|
|
@@ -785,7 +785,7 @@ static void cDeclare(DataType dt) {
|
|
|
if(v != NULL) {
|
|
|
cDeclared(var);
|
|
|
}
|
|
|
- v = vAdd(&vars, var, dt);
|
|
|
+ v = vAdd(&vars, var, dt, &structs);
|
|
|
cConsumeToken(T_SET);
|
|
|
cStoreVariable(v, cExpression(), "=");
|
|
|
}
|
|
@@ -908,8 +908,8 @@ static void cFunctionAddArgument(Function* f, DataType dt) {
|
|
|
if(v != NULL) {
|
|
|
cDeclared(name);
|
|
|
}
|
|
|
- vAdd(&vars, name, dt);
|
|
|
- if(fAddArgument(f, dt)) {
|
|
|
+ vAdd(&vars, name, dt, &structs);
|
|
|
+ if(fAddArgument(f, dt, &structs)) {
|
|
|
cTooMuchArguments();
|
|
|
}
|
|
|
cFunctionCommaOrEnd(f);
|