Skip to content

Commit

Permalink
Merge pull request #93964 from AThousandShips/lambda_arg_fix
Browse files Browse the repository at this point in the history
[GDScript] Fix `get_argument_count` for lambda `Callable`s
  • Loading branch information
akien-mga committed Jul 5, 2024
2 parents 1704af0 + aa28782 commit 33f456c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 2 deletions.
4 changes: 2 additions & 2 deletions modules/gdscript/gdscript_lambda_callable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ int GDScriptLambdaCallable::get_argument_count(bool &r_is_valid) const {
return 0;
}
r_is_valid = true;
return function->get_argument_count();
return function->get_argument_count() - captures.size();
}

void GDScriptLambdaCallable::call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const {
Expand Down Expand Up @@ -204,7 +204,7 @@ int GDScriptLambdaSelfCallable::get_argument_count(bool &r_is_valid) const {
return 0;
}
r_is_valid = true;
return function->get_argument_count();
return function->get_argument_count() - captures.size();
}

void GDScriptLambdaSelfCallable::call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# https://github.com/godotengine/godot/issues/93952

func foo():
pass

func test():
var a: int

var lambda_self := func (x: int) -> void:
foo()
print(a, x)

print(lambda_self.get_argument_count()) # Should print 1.

var lambda_non_self := func (x: int) -> void:
print(a, x)

print(lambda_non_self.get_argument_count()) # Should print 1.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
GDTEST_OK
1
1

0 comments on commit 33f456c

Please sign in to comment.