Core: Fix Object::has_method() for script static methods

This commit is contained in:
Danil Alexeev
2023-10-04 07:54:03 +03:00
parent bfd78bb917
commit ed0b3c08e1
9 changed files with 40 additions and 1 deletions

View File

@ -346,6 +346,10 @@ bool GDScript::has_method(const StringName &p_method) const {
return member_functions.has(p_method);
}
bool GDScript::has_static_method(const StringName &p_method) const {
return member_functions.has(p_method) && member_functions[p_method]->is_static();
}
MethodInfo GDScript::get_method_info(const StringName &p_method) const {
HashMap<StringName, GDScriptFunction *>::ConstIterator E = member_functions.find(p_method);
if (!E) {

View File

@ -266,6 +266,7 @@ public:
virtual void get_script_method_list(List<MethodInfo> *p_list) const override;
virtual bool has_method(const StringName &p_method) const override;
virtual bool has_static_method(const StringName &p_method) const override;
virtual MethodInfo get_method_info(const StringName &p_method) const override;
virtual void get_script_property_list(List<PropertyInfo> *p_list) const override;

View File

@ -0,0 +1,12 @@
# GH-79521
class_name TestStaticMethodAsCallable
static func static_func() -> String:
return "Test"
func test():
var a: Callable = TestStaticMethodAsCallable.static_func
var b: Callable = static_func
prints(a.call(), a.is_valid())
prints(b.call(), b.is_valid())

View File

@ -0,0 +1,3 @@
GDTEST_OK
Test true
Test true