Allow empty parameter lists for action functions without parameters

- Using A_Scream() in a state instead of A_Scream is now valid.
This commit is contained in:
Randy Heit 2015-01-06 19:44:20 -06:00
parent 8c105ff3a0
commit 320fb9aec5

View file

@ -391,6 +391,8 @@ void ParseFunctionParameters(FScanner &sc, PClassActor *cls, TArray<FxExpression
const TArray<DWORD> &paramflags = afd->Variants[0].ArgFlags;
int numparams = (int)params.Size();
int pnum = 0;
bool zeroparm;
if (afd->Flags & VARF_Method)
{
numparams--;
@ -401,11 +403,9 @@ void ParseFunctionParameters(FScanner &sc, PClassActor *cls, TArray<FxExpression
numparams -= 2;
pnum += 2;
}
if (numparams > 0)
{
int v;
if (!(paramflags[pnum] & VARF_Optional))
assert(numparams >= 0);
zeroparm = numparams == 0;
if (numparams > 0 && !(paramflags[pnum] & VARF_Optional))
{
sc.MustGetStringName("(");
}
@ -416,7 +416,6 @@ void ParseFunctionParameters(FScanner &sc, PClassActor *cls, TArray<FxExpression
return;
}
}
while (numparams > 0)
{
FxExpression *x;
@ -428,8 +427,8 @@ void ParseFunctionParameters(FScanner &sc, PClassActor *cls, TArray<FxExpression
sc.ScriptError("You cannot use state jumps commands with a jump offset on multistate definitions\n");
}
v = sc.Number;
if (v<0)
int v = sc.Number;
if (v < 0)
{
sc.ScriptError("Negative jump offsets are not allowed");
}
@ -469,15 +468,15 @@ void ParseFunctionParameters(FScanner &sc, PClassActor *cls, TArray<FxExpression
sc.MustGetStringName (",");
}
}
sc.MustGetStringName(")");
}
else
if (zeroparm)
{
sc.MustGetString();
if (sc.Compare("("))
if (!sc.CheckString(")"))
{
sc.ScriptError("You cannot pass parameters to '%s'\n", afd->SymbolName.GetChars());
}
sc.UnGet();
}
else
{
sc.MustGetStringName(")");
}
}