Skip to content

Commit

Permalink
Merge pull request #94076 from AThousandShips/lambda_get_method_fix
Browse files Browse the repository at this point in the history
[GDScript] Fix `get_method` for lambda self `Callable`s
  • Loading branch information
akien-mga committed Jul 8, 2024
2 parents 3ced38c + f68ab70 commit 6deaa15
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 0 deletions.
4 changes: 4 additions & 0 deletions modules/gdscript/gdscript_lambda_callable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ ObjectID GDScriptLambdaSelfCallable::get_object() const {
return object->get_instance_id();
}

StringName GDScriptLambdaSelfCallable::get_method() const {
return function->get_name();
}

int GDScriptLambdaSelfCallable::get_argument_count(bool &r_is_valid) const {
if (function == nullptr) {
r_is_valid = false;
Expand Down
1 change: 1 addition & 0 deletions modules/gdscript/gdscript_lambda_callable.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ class GDScriptLambdaSelfCallable : public CallableCustom {
CompareEqualFunc get_compare_equal_func() const override;
CompareLessFunc get_compare_less_func() const override;
ObjectID get_object() const override;
StringName get_method() const override;
int get_argument_count(bool &r_is_valid) const override;
void call(const Variant **p_arguments, int p_argcount, Variant &r_return_value, Callable::CallError &r_call_error) const override;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# https://github.com/godotengine/godot/issues/94074

func foo():
pass

func test():
var lambda_self := func test() -> void:
foo()
var anon_lambda_self := func() -> void:
foo()

print(lambda_self.get_method()) # Should print "test".
print(anon_lambda_self.get_method()) # Should print "<anonymous lambda>".

var lambda_non_self := func test() -> void:
pass
var anon_lambda_non_self := func() -> void:
pass

print(lambda_non_self.get_method()) # Should print "test".
print(anon_lambda_non_self.get_method()) # Should print "<anonymous lambda>".
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
GDTEST_OK
test
<anonymous lambda>
test
<anonymous lambda>

0 comments on commit 6deaa15

Please sign in to comment.