Now checks for correct parameters to main()

git-svn-id: http://picoc.googlecode.com/svn/trunk@517 21eae674-98b7-11dd-bd71-f92a316d2d60
This commit is contained in:
zik.saleeba 2011-02-12 04:52:45 +00:00
parent 6dd3e69fa5
commit 19b22261d3

11
parse.c
View file

@ -127,6 +127,17 @@ struct Value *ParseFunctionDefinition(struct ParseState *Parser, struct ValueTyp
if (FuncValue->Val->FuncDef.NumParams != 0 && Token != TokenCloseBracket && Token != TokenComma && Token != TokenEllipsis)
ProgramFail(&ParamParser, "bad parameter");
if (strcmp(Identifier, "main") == 0)
{
/* make sure it's int main() */
if (FuncValue->Val->FuncDef.ReturnType != &IntType)
ProgramFail(Parser, "main() should return an int");
if (FuncValue->Val->FuncDef.NumParams != 0 &&
(FuncValue->Val->FuncDef.NumParams != 2 || FuncValue->Val->FuncDef.ParamType[0] != &IntType) )
ProgramFail(Parser, "bad parameters to main()");
}
/* look for a function body */
Token = LexGetToken(Parser, NULL, FALSE);
if (Token == TokenSemicolon)