Check argument type in new Fn.

This commit is contained in:
Bob Nystrom
2014-04-04 18:13:13 -07:00
parent 4a8cf3a7bf
commit f5a9f39568
3 changed files with 6 additions and 6 deletions

View File

@ -1456,9 +1456,6 @@ static void methodCall(Compiler* compiler, Code instruction,
Compiler fnCompiler;
initCompiler(&fnCompiler, compiler->parser, compiler, true);
// TODO: Allow newline between '{' and '|'?
fnCompiler.numParams = parameterList(&fnCompiler, NULL, NULL,
TOKEN_PIPE, TOKEN_PIPE);
@ -2561,8 +2558,6 @@ static void classDefinition(Compiler* compiler)
// Compile the method definitions.
consume(compiler, TOKEN_LEFT_BRACE, "Expect '{' after class declaration.");
// TODO: Should newline be required here?
matchLine(compiler);
while (!match(compiler, TOKEN_RIGHT_BRACE))

View File

@ -308,7 +308,11 @@ DEF_NATIVE(fn_instantiate)
DEF_NATIVE(fn_new)
{
// TODO: Validate arg type.
if (!IS_FN(args[1]) && !IS_CLOSURE(args[1]))
{
RETURN_ERROR("Argument must be a function.");
}
// The block argument is already a function, so just return it.
RETURN_VAL(args[1]);
}

View File

@ -0,0 +1 @@
new Fn(3) // expect runtime error: Argument must be a function.