summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGeorge Marques <george@gmarqu.es>2019-10-19 13:38:50 -0300
committerGeorge Marques <george@gmarqu.es>2019-10-19 13:45:52 -0300
commit05465b96933c295c15323802e9184889857227a1 (patch)
treee53141bacbf9c1e4a68139474d9d9c1caef7536c /modules
parent119bf237209414a49879fba40459f22315ab1467 (diff)
GDScript: Add _ prefix on class name in type compatibility check
This makes sure that the classes internally represented with an underscore (_) prefix, such as singletons, are still properly checked for inheritance in the ClassDB.
Diffstat (limited to 'modules')
-rw-r--r--modules/gdscript/gdscript_parser.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index cf326bef36..282bb45c3f 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -6109,12 +6109,18 @@ bool GDScriptParser::_is_type_compatible(const DataType &p_container, const Data
break;
}
+ // Some classes are prefixed with `_` internally
+ if (!ClassDB::class_exists(expr_native)) {
+ expr_native = "_" + expr_native;
+ }
+
switch (p_container.kind) {
case DataType::NATIVE: {
if (p_container.is_meta_type) {
return ClassDB::is_parent_class(expr_native, GDScriptNativeClass::get_class_static());
} else {
- return ClassDB::is_parent_class(expr_native, p_container.native_type);
+ StringName container_native = ClassDB::class_exists(p_container.native_type) ? p_container.native_type : StringName("_" + p_container.native_type);
+ return ClassDB::is_parent_class(expr_native, container_native);
}
} break;
case DataType::SCRIPT: