feat: add arity getter to Fn class and rename numParams to arity

Add a public `arity` getter to the Fn class that returns the number of required arguments for a function. Internally rename the `numParams` field to `arity` across the codebase for consistency, update the C API parameter name from `numParams` to `arity` in `wrenDefineMethod` and `wrenDefineStaticMethod`, and adjust the error message in `callFunction` to use the new field name. Also update documentation to clarify that extra arguments are ignored rather than causing an error, and add a new test file `test/function/arity.wren` verifying arity values from 0 to 4.
This commit is contained in:
Bob Nystrom
2015-01-24 04:33:05 +00:00
parent c65b03ac32
commit 368d9a3052
7 changed files with 46 additions and 28 deletions
+4 -4
View File
@@ -97,11 +97,11 @@ WrenInterpretResult wrenInterpret(WrenVM* vm, const char* sourcePath,
// global class named [className] to bind the method to. If not found, it will
// be created automatically.
//
// Defines a method on that class named [methodName] accepting [numParams]
// Defines a method on that class named [methodName] accepting [arity]
// parameters. If a method already exists with that name and arity, it will be
// replaced. When invoked, the method will call [method].
void wrenDefineMethod(WrenVM* vm, const char* className,
const char* methodName, int numParams,
const char* methodName, int arity,
WrenForeignMethodFn method);
// Defines a static foreign method implemented by the host application. Looks
@@ -109,10 +109,10 @@ void wrenDefineMethod(WrenVM* vm, const char* className,
// will be created automatically.
//
// Defines a static method on that class named [methodName] accepting
// [numParams] parameters. If a method already exists with that name and arity,
// [arity] parameters. If a method already exists with that name and arity,
// it will be replaced. When invoked, the method will call [method].
void wrenDefineStaticMethod(WrenVM* vm, const char* className,
const char* methodName, int numParams,
const char* methodName, int arity,
WrenForeignMethodFn method);
// The following functions read one of the arguments passed to a foreign call.