mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
Check argument type in new Fn.
This commit is contained in:
@ -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))
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
|
||||
1
test/function/new_with_wrong_argument_type.wren
Normal file
1
test/function/new_with_wrong_argument_type.wren
Normal file
@ -0,0 +1 @@
|
||||
new Fn(3) // expect runtime error: Argument must be a function.
|
||||
Reference in New Issue
Block a user