diff options
author | George Marques <george@gmarqu.es> | 2021-10-08 09:10:19 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-08 09:10:19 -0300 |
commit | b010f96c898ed1e9f9fa2e24035932efccaea1ac (patch) | |
tree | dc77360f5859197e2d6318a921fecdc726fa70d8 /modules | |
parent | 96767c18f89bc12232f4ce7016c797ebb0aaeb19 (diff) | |
parent | c18a27a9cd09d9360513969f0faef0b3ae369918 (diff) |
Merge pull request #53336 from briansemrau/gdscript-i'm-not-my-own-local-class
[GDScript 2.0] fix script base class self-assignment
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gdscript/gdscript_compiler.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index 9eee0b57f3..34b1e45cdf 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -109,7 +109,9 @@ GDScriptDataType GDScriptCompiler::_gdtype_from_datatype(const GDScriptParser::D // Locate class by constructing the path to it and following that path GDScriptParser::ClassNode *class_type = p_datatype.class_type; if (class_type) { - if ((!main_script->path.is_empty() && class_type->fqcn.begins_with(main_script->path)) || (!main_script->name.is_empty() && class_type->fqcn.begins_with(main_script->name))) { + const bool is_inner_by_path = (!main_script->path.is_empty()) && (class_type->fqcn.split("::")[0] == main_script->path); + const bool is_inner_by_name = (!main_script->name.is_empty()) && (class_type->fqcn.split("::")[0] == main_script->name); + if (is_inner_by_path || is_inner_by_name) { // Local class. List<StringName> names; while (class_type->outer) { |