From 0b38cf8a8de8430df68a62a2788fd25848857a22 Mon Sep 17 00:00:00 2001 From: "ocean (they/them)" Date: Wed, 21 Jun 2023 14:19:52 -0400 Subject: [PATCH] Add error message when a GDScript resource fails to load. Currently, GDScripts who are only loaded through `ResourceLoader::load()`, like Autoloads, do not have a pathway to announce there is an error in their code. This contributes to significant confusion in error projects when autoloads are involved. At least partially closes #78230. (cherry picked from commit cca57171c16c90d6acec4e0eef1ed904973bcb20) --- modules/gdscript/gdscript.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 3d6d133579a..0638e5ff52c 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -2700,6 +2700,11 @@ Ref ResourceFormatLoaderGDScript::load(const String &p_path, const Str Error err; Ref scr = GDScriptCache::get_full_script(p_path, err, "", p_cache_mode == CACHE_MODE_IGNORE); + if (err && scr.is_valid()) { + // If !scr.is_valid(), the error was likely from scr->load_source_code(), which already generates an error. + ERR_PRINT_ED(vformat(R"(Failed to load script "%s" with error "%s".)", p_path, error_names[err])); + } + if (r_error) { // Don't fail loading because of parsing error. *r_error = scr.is_valid() ? OK : err;