Răsfoiți Sursa

Merge pull request #53336 from briansemrau/gdscript-i'm-not-my-own-local-class

[GDScript 2.0] fix script base class self-assignment
George Marques 3 ani în urmă
părinte
comite
b010f96c89
1 a modificat fișierele cu 3 adăugiri și 1 ștergeri
  1. 3 1
      modules/gdscript/gdscript_compiler.cpp

+ 3 - 1
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) {