diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2022-03-28 13:35:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-28 13:35:21 +0200 |
commit | 143d13717bcedd00b457958c563f0ab5d7c93896 (patch) | |
tree | d22b48fbffbf7bcbc2b66da3ae689ae0809d4aed /core/object/class_db.cpp | |
parent | 31f26f5c58f46c464653070fd1df4b57d0cd6d36 (diff) | |
parent | 360dea5348652d8806d33598e111651afb3d193a (diff) | |
download | redot-engine-143d13717bcedd00b457958c563f0ab5d7c93896.tar.gz |
Merge pull request #59553 from reduz/script-extension-support
Diffstat (limited to 'core/object/class_db.cpp')
-rw-r--r-- | core/object/class_db.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index e09c6cb97c..51ca06d9d2 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -1485,9 +1485,10 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_ if (p_object_core) { mi.flags |= METHOD_FLAG_OBJECT_CORE; } - if (p_arg_names.size()) { + + if (!p_object_core) { if (p_arg_names.size() != mi.arguments.size()) { - WARN_PRINT("Mismatch argument name count for virtual function: " + String(p_class) + "::" + p_method.name); + WARN_PRINT("Mismatch argument name count for virtual method: " + String(p_class) + "::" + p_method.name); } else { for (int i = 0; i < p_arg_names.size(); i++) { mi.arguments[i].name = p_arg_names[i]; @@ -1495,6 +1496,10 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_ } } + if (classes[p_class].virtual_methods_map.has(p_method.name)) { + // overloading not supported + ERR_FAIL_MSG("Virtual method already bound '" + String(p_class) + "::" + p_method.name + "'."); + } classes[p_class].virtual_methods.push_back(mi); classes[p_class].virtual_methods_map[p_method.name] = mi; |