summaryrefslogtreecommitdiffstats
path: root/core/object/class_db.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-03-28 13:35:21 +0200
committerGitHub <noreply@github.com>2022-03-28 13:35:21 +0200
commit143d13717bcedd00b457958c563f0ab5d7c93896 (patch)
treed22b48fbffbf7bcbc2b66da3ae689ae0809d4aed /core/object/class_db.cpp
parent31f26f5c58f46c464653070fd1df4b57d0cd6d36 (diff)
parent360dea5348652d8806d33598e111651afb3d193a (diff)
downloadredot-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.cpp9
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;