GDScript: Avoid calling non-static methods on native classes

This commit is contained in:
George Marques 2023-01-28 20:33:01 -03:00
parent 218bef90af
commit aee7b7363b
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D
3 changed files with 13 additions and 1 deletions

View file

@ -98,7 +98,7 @@ Variant GDScriptNativeClass::callp(const StringName &p_method, const Variant **p
return Object::callp(p_method, p_args, p_argcount, r_error);
}
MethodBind *method = ClassDB::get_method(name, p_method);
if (method) {
if (method && method->is_static()) {
// Native static method.
return method->call(nullptr, p_args, p_argcount, r_error);
}

View file

@ -0,0 +1,6 @@
# https://github.com/godotengine/godot/issues/66675
func test():
example(Node2D)
func example(thing):
print(thing.has_method('asdf'))

View file

@ -0,0 +1,6 @@
GDTEST_RUNTIME_ERROR
>> SCRIPT ERROR
>> on function: example()
>> runtime/errors/non_static_method_call_on_native_class.gd
>> 6
>> Invalid call. Nonexistent function 'has_method' in base 'Node2D'.