From 0a67ee52d16bb245271a136b0fa801b129b1d729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 13 May 2024 16:59:43 +0200 Subject: [PATCH] Revert "GDScript: Implement get_dependencies()" This reverts commit dc73440f899e6f32de748787e946ad762771fda0. This commit in some form is needed to fix handling of dependencies on export, but as it's also used for import, it's exposing some pre-existing issues which we need to solve first. So reverting for now to give ourselves time to iron this out for a future Godot release. Fixes #91726. --- modules/gdscript/gdscript.cpp | 9 ++------- modules/gdscript/gdscript.h | 2 +- modules/gdscript/gdscript_analyzer.cpp | 15 +-------------- modules/gdscript/gdscript_parser.h | 10 +++------- 4 files changed, 7 insertions(+), 29 deletions(-) diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 88383554b61..c7862e23a9e 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -2919,7 +2919,7 @@ String ResourceFormatLoaderGDScript::get_resource_type(const String &p_path) con return ""; } -void ResourceFormatLoaderGDScript::get_dependencies(const String &p_path, List *r_dependencies, bool p_add_types) { +void ResourceFormatLoaderGDScript::get_dependencies(const String &p_path, List *p_dependencies, bool p_add_types) { Ref file = FileAccess::open(p_path, FileAccess::READ); ERR_FAIL_COND_MSG(file.is_null(), "Cannot open file '" + p_path + "'."); @@ -2933,13 +2933,8 @@ void ResourceFormatLoaderGDScript::get_dependencies(const String &p_path, Listpush_back(E); + p_dependencies->push_back(E); } } diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h index f63b0da745c..728459de441 100644 --- a/modules/gdscript/gdscript.h +++ b/modules/gdscript/gdscript.h @@ -638,7 +638,7 @@ public: virtual void get_recognized_extensions(List *p_extensions) const override; virtual bool handles_type(const String &p_type) const override; virtual String get_resource_type(const String &p_path) const override; - virtual void get_dependencies(const String &p_path, List *r_dependencies, bool p_add_types = false) override; + virtual void get_dependencies(const String &p_path, List *p_dependencies, bool p_add_types = false) override; }; class ResourceFormatSaverGDScript : public ResourceFormatSaver { diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index ac5564cf127..46b34e49771 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -562,11 +562,6 @@ Error GDScriptAnalyzer::resolve_class_inheritance(GDScriptParser::ClassNode *p_c class_type.native_type = result.native_type; p_class->set_datatype(class_type); - // Add base class to the list of dependencies. - if (result.kind == GDScriptParser::DataType::CLASS) { - parser->add_dependency(result.script_path); - } - // Apply annotations. for (GDScriptParser::AnnotationNode *&E : p_class->annotations) { resolve_annotation(E); @@ -873,11 +868,6 @@ GDScriptParser::DataType GDScriptAnalyzer::resolve_datatype(GDScriptParser::Type } p_type->set_datatype(result); - - if (result.kind == GDScriptParser::DataType::CLASS || result.kind == GDScriptParser::DataType::SCRIPT) { - parser->add_dependency(result.script_path); - } - return result; } @@ -4112,7 +4102,6 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident if (ScriptServer::is_global_class(name)) { p_identifier->set_datatype(make_global_class_meta_type(name, p_identifier)); - parser->add_dependency(p_identifier->get_datatype().script_path); return; } @@ -4155,7 +4144,6 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident } result.is_constant = true; p_identifier->set_datatype(result); - parser->add_dependency(autoload.path); return; } } @@ -4275,6 +4263,7 @@ void GDScriptAnalyzer::reduce_preload(GDScriptParser::PreloadNode *p_preload) { push_error("Preloaded path must be a constant string.", p_preload->path); } else { p_preload->resolved_path = p_preload->path->reduced_value; + // TODO: Save this as script dependency. if (p_preload->resolved_path.is_relative_path()) { p_preload->resolved_path = parser->script_path.get_base_dir().path_join(p_preload->resolved_path); } @@ -4305,8 +4294,6 @@ void GDScriptAnalyzer::reduce_preload(GDScriptParser::PreloadNode *p_preload) { push_error(vformat(R"(Could not preload resource file "%s".)", p_preload->resolved_path), p_preload->path); } } - - parser->add_dependency(p_preload->resolved_path); } } diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h index 1e67e2d496a..4c11fa7f8b9 100644 --- a/modules/gdscript/gdscript_parser.h +++ b/modules/gdscript/gdscript_parser.h @@ -1432,8 +1432,6 @@ private: void reset_extents(Node *p_node, GDScriptTokenizer::Token p_token); void reset_extents(Node *p_node, Node *p_from); - HashSet dependencies; - template T *alloc_node() { T *node = memnew(T); @@ -1577,11 +1575,9 @@ public: bool annotation_exists(const String &p_annotation_name) const; const List &get_errors() const { return errors; } - const HashSet &get_dependencies() const { - return dependencies; - } - void add_dependency(const String &p_dependency) { - dependencies.insert(p_dependency); + const List get_dependencies() const { + // TODO: Keep track of deps. + return List(); } #ifdef DEBUG_ENABLED const List &get_warnings() const { return warnings; }