mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 19:42:43 +00:00
Clean up ProjectConverter3To4 architecture, move renames map to separate file
This allows properly limiting what features depend on the RegEx module (doing the actual conversion) and what features only require the renames data (GDScript suggestions). Also better excludes the conversion command line options when actually disabling deprecated code. Fixes #73029.
This commit is contained in:
parent
929ee61170
commit
e19e6b09b9
File diff suppressed because it is too large
Load Diff
@ -33,31 +33,36 @@
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
|
||||
#include "core/io/file_access.h"
|
||||
#include "core/object/ref_counted.h"
|
||||
#include "modules/modules_enabled.gen.h" // For regex.
|
||||
|
||||
#ifndef MODULE_REGEX_ENABLED
|
||||
|
||||
#include "core/error/error_macros.h"
|
||||
|
||||
class ProjectConverter3To4 {
|
||||
public:
|
||||
ProjectConverter3To4(int, int) {}
|
||||
|
||||
bool validate_conversion() {
|
||||
ERR_FAIL_V_MSG(false, "Can't validate conversion for Godot 3.x projects, because RegEx module is disabled.");
|
||||
}
|
||||
|
||||
bool convert() {
|
||||
ERR_FAIL_V_MSG(false, "Can't run converter for Godot 3.x projects, because RegEx module is disabled.");
|
||||
}
|
||||
};
|
||||
|
||||
#else // Has regex.
|
||||
|
||||
#include "core/string/ustring.h"
|
||||
#include "core/templates/local_vector.h"
|
||||
#include "core/templates/vector.h"
|
||||
|
||||
class RegEx;
|
||||
|
||||
class ProjectConverter3To4 {
|
||||
public:
|
||||
class RegExContainer;
|
||||
static const char *enum_renames[][2];
|
||||
static const char *gdscript_function_renames[][2];
|
||||
static const char *csharp_function_renames[][2];
|
||||
static const char *gdscript_properties_renames[][2];
|
||||
static const char *csharp_properties_renames[][2];
|
||||
static const char *gdscript_signals_renames[][2];
|
||||
static const char *csharp_signals_renames[][2];
|
||||
static const char *project_settings_renames[][2];
|
||||
static const char *input_map_renames[][2];
|
||||
static const char *builtin_types_renames[][2];
|
||||
static const char *shaders_renames[][2];
|
||||
static const char *class_renames[][2];
|
||||
static const char *color_renames[][2];
|
||||
|
||||
private:
|
||||
uint64_t maximum_file_size;
|
||||
uint64_t maximum_line_length;
|
||||
|
||||
@ -108,10 +113,12 @@ private:
|
||||
|
||||
public:
|
||||
ProjectConverter3To4(int, int);
|
||||
int validate_conversion();
|
||||
int convert();
|
||||
bool validate_conversion();
|
||||
bool convert();
|
||||
};
|
||||
|
||||
#endif // MODULE_REGEX_ENABLED
|
||||
|
||||
#endif // DISABLE_DEPRECATED
|
||||
|
||||
#endif // PROJECT_CONVERTER_3_TO_4_H
|
||||
|
1797
editor/renames_map_3_to_4.cpp
Normal file
1797
editor/renames_map_3_to_4.cpp
Normal file
File diff suppressed because it is too large
Load Diff
54
editor/renames_map_3_to_4.h
Normal file
54
editor/renames_map_3_to_4.h
Normal file
@ -0,0 +1,54 @@
|
||||
/**************************************************************************/
|
||||
/* renames_map_3_to_4.h */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef RENAMES_MAP_3_TO_4_H
|
||||
#define RENAMES_MAP_3_TO_4_H
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
|
||||
struct RenamesMap3To4 {
|
||||
static const char *enum_renames[][2];
|
||||
static const char *gdscript_function_renames[][2];
|
||||
static const char *csharp_function_renames[][2];
|
||||
static const char *gdscript_properties_renames[][2];
|
||||
static const char *csharp_properties_renames[][2];
|
||||
static const char *gdscript_signals_renames[][2];
|
||||
static const char *csharp_signals_renames[][2];
|
||||
static const char *project_settings_renames[][2];
|
||||
static const char *input_map_renames[][2];
|
||||
static const char *builtin_types_renames[][2];
|
||||
static const char *shaders_renames[][2];
|
||||
static const char *class_renames[][2];
|
||||
static const char *color_renames[][2];
|
||||
};
|
||||
|
||||
#endif // DISABLE_DEPRECATED
|
||||
|
||||
#endif // RENAMES_MAP_3_TO_4_H
|
@ -93,13 +93,17 @@
|
||||
#include "editor/editor_settings.h"
|
||||
#include "editor/editor_translation.h"
|
||||
#include "editor/progress_dialog.h"
|
||||
#include "editor/project_converter_3_to_4.h"
|
||||
#include "editor/project_manager.h"
|
||||
#include "editor/register_editor_types.h"
|
||||
|
||||
#ifndef NO_EDITOR_SPLASH
|
||||
#include "main/splash_editor.gen.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
#include "editor/project_converter_3_to_4.h"
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#endif // TOOLS_ENABLED
|
||||
|
||||
#include "modules/modules_enabled.gen.h" // For mono.
|
||||
|
||||
@ -163,8 +167,10 @@ static OS::ProcessID editor_pid = 0;
|
||||
static bool found_project = false;
|
||||
static bool auto_build_solutions = false;
|
||||
static String debug_server_uri;
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
static int converter_max_kb_file = 4 * 1024; // 4MB
|
||||
static int converter_max_line_length = 100000;
|
||||
#endif // DISABLE_DEPRECATED
|
||||
|
||||
HashMap<Main::CLIScope, Vector<String>> forwardable_cli_arguments;
|
||||
#endif
|
||||
@ -423,10 +429,12 @@ void Main::print_help(const char *p_binary) {
|
||||
OS::get_singleton()->print(" The target directory must exist.\n");
|
||||
OS::get_singleton()->print(" --export-debug <preset> <path> Export the project in debug mode using the given preset and output path. See --export-release description for other considerations.\n");
|
||||
OS::get_singleton()->print(" --export-pack <preset> <path> Export the project data only using the given preset and output path. The <path> extension determines whether it will be in PCK or ZIP format.\n");
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
OS::get_singleton()->print(" --convert-3to4 [<max_file_kb>] [<max_line_size>]\n");
|
||||
OS::get_singleton()->print(" Converts project from Godot 3.x to Godot 4.x.\n");
|
||||
OS::get_singleton()->print(" --validate-conversion-3to4 [<max_file_kb>] [<max_line_size>]\n");
|
||||
OS::get_singleton()->print(" Shows what elements will be renamed when converting project from Godot 3.x to Godot 4.x.\n");
|
||||
#endif // DISABLE_DEPRECATED
|
||||
OS::get_singleton()->print(" --doctool [<path>] Dump the engine API reference to the given <path> (defaults to current dir) in XML format, merging if existing files are found.\n");
|
||||
OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n");
|
||||
OS::get_singleton()->print(" --build-solutions Build the scripting solutions (e.g. for C# projects). Implies --editor and requires a valid project to edit.\n");
|
||||
@ -1108,6 +1116,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
editor = true;
|
||||
cmdline_tool = true;
|
||||
main_args.push_back(I->get());
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
} else if (I->get() == "--convert-3to4") {
|
||||
// Actually handling is done in start().
|
||||
cmdline_tool = true;
|
||||
@ -1138,6 +1147,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // DISABLE_DEPRECATED
|
||||
} else if (I->get() == "--doctool") {
|
||||
// Actually handling is done in start().
|
||||
cmdline_tool = true;
|
||||
@ -1147,7 +1157,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
|
||||
audio_driver = NULL_AUDIO_DRIVER;
|
||||
display_driver = NULL_DISPLAY_DRIVER;
|
||||
main_args.push_back(I->get());
|
||||
#endif
|
||||
#endif // TOOLS_ENABLED
|
||||
} else if (I->get() == "--path") { // set path of project to start or edit
|
||||
|
||||
if (I->next()) {
|
||||
@ -2370,7 +2380,7 @@ bool Main::start() {
|
||||
bool converting_project = false;
|
||||
bool validating_converting_project = false;
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#endif
|
||||
#endif // TOOLS_ENABLED
|
||||
|
||||
main_timer_sync.init(OS::get_singleton()->get_ticks_usec());
|
||||
List<String> args = OS::get_singleton()->get_cmdline_args();
|
||||
@ -2395,7 +2405,7 @@ bool Main::start() {
|
||||
editor = true;
|
||||
} else if (args[i] == "-p" || args[i] == "--project-manager") {
|
||||
project_manager = true;
|
||||
#endif
|
||||
#endif // TOOLS_ENABLED
|
||||
} else if (args[i].length() && args[i][0] != '-' && positional_arg.is_empty()) {
|
||||
positional_arg = args[i];
|
||||
|
||||
@ -2553,18 +2563,22 @@ bool Main::start() {
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
if (converting_project) {
|
||||
int exit_code = ProjectConverter3To4(converter_max_kb_file, converter_max_line_length).convert();
|
||||
OS::get_singleton()->set_exit_code(exit_code);
|
||||
int ret = ProjectConverter3To4(converter_max_kb_file, converter_max_line_length).convert();
|
||||
if (ret) {
|
||||
OS::get_singleton()->set_exit_code(EXIT_SUCCESS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (validating_converting_project) {
|
||||
int exit_code = ProjectConverter3To4(converter_max_kb_file, converter_max_line_length).validate_conversion();
|
||||
OS::get_singleton()->set_exit_code(exit_code);
|
||||
bool ret = ProjectConverter3To4(converter_max_kb_file, converter_max_line_length).validate_conversion();
|
||||
if (ret) {
|
||||
OS::get_singleton()->set_exit_code(EXIT_SUCCESS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif // DISABLE_DEPRECATED
|
||||
|
||||
#endif
|
||||
#endif // TOOLS_ENABLED
|
||||
|
||||
if (script.is_empty() && game_path.is_empty() && String(GLOBAL_GET("application/run/main_scene")) != "") {
|
||||
game_path = GLOBAL_GET("application/run/main_scene");
|
||||
|
@ -42,6 +42,11 @@
|
||||
#include "gdscript_utility_functions.h"
|
||||
#include "scene/resources/packed_scene.h"
|
||||
|
||||
#if defined(TOOLS_ENABLED) && !defined(DISABLE_DEPRECATED)
|
||||
#define SUGGEST_GODOT4_RENAMES
|
||||
#include "editor/renames_map_3_to_4.h"
|
||||
#endif
|
||||
|
||||
#define UNNAMED_ENUM "<anonymous enum>"
|
||||
#define ENUM_SEPARATOR "::"
|
||||
|
||||
@ -2601,9 +2606,8 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
|
||||
p_binary_op->set_datatype(result);
|
||||
}
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
const char *GDScriptAnalyzer::get_rename_from_map(const char *map[][2], String key) {
|
||||
#ifdef SUGGEST_GODOT4_RENAMES
|
||||
const char *get_rename_from_map(const char *map[][2], String key) {
|
||||
for (int index = 0; map[index][0]; index++) {
|
||||
if (map[index][0] == key) {
|
||||
return map[index][1];
|
||||
@ -2614,39 +2618,39 @@ const char *GDScriptAnalyzer::get_rename_from_map(const char *map[][2], String k
|
||||
|
||||
// Checks if an identifier/function name has been renamed in Godot 4, uses ProjectConverter3To4 for rename map.
|
||||
// Returns the new name if found, nullptr otherwise.
|
||||
const char *GDScriptAnalyzer::check_for_renamed_identifier(String identifier, GDScriptParser::Node::Type type) {
|
||||
const char *check_for_renamed_identifier(String identifier, GDScriptParser::Node::Type type) {
|
||||
switch (type) {
|
||||
case GDScriptParser::Node::IDENTIFIER: {
|
||||
// Check properties
|
||||
const char *result = get_rename_from_map(ProjectConverter3To4::gdscript_properties_renames, identifier);
|
||||
const char *result = get_rename_from_map(RenamesMap3To4::gdscript_properties_renames, identifier);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
// Check enum values
|
||||
result = get_rename_from_map(ProjectConverter3To4::enum_renames, identifier);
|
||||
result = get_rename_from_map(RenamesMap3To4::enum_renames, identifier);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
// Check color constants
|
||||
result = get_rename_from_map(ProjectConverter3To4::color_renames, identifier);
|
||||
result = get_rename_from_map(RenamesMap3To4::color_renames, identifier);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
// Check type names
|
||||
result = get_rename_from_map(ProjectConverter3To4::class_renames, identifier);
|
||||
result = get_rename_from_map(RenamesMap3To4::class_renames, identifier);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
return get_rename_from_map(ProjectConverter3To4::builtin_types_renames, identifier);
|
||||
return get_rename_from_map(RenamesMap3To4::builtin_types_renames, identifier);
|
||||
}
|
||||
case GDScriptParser::Node::CALL: {
|
||||
const char *result = get_rename_from_map(ProjectConverter3To4::gdscript_function_renames, identifier);
|
||||
const char *result = get_rename_from_map(RenamesMap3To4::gdscript_function_renames, identifier);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
// Built-in Types are mistaken for function calls when the built-in type is not found.
|
||||
// Check built-in types if function rename not found
|
||||
return get_rename_from_map(ProjectConverter3To4::builtin_types_renames, identifier);
|
||||
return get_rename_from_map(RenamesMap3To4::builtin_types_renames, identifier);
|
||||
}
|
||||
// Signal references don't get parsed through the GDScriptAnalyzer. No support for signal rename hints.
|
||||
default:
|
||||
@ -2654,8 +2658,7 @@ const char *GDScriptAnalyzer::check_for_renamed_identifier(String identifier, GD
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#endif // TOOLS_ENABLED
|
||||
#endif // SUGGEST_GODOT4_RENAMES
|
||||
|
||||
void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_await, bool p_is_root) {
|
||||
bool all_is_constant = true;
|
||||
@ -3078,8 +3081,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
|
||||
}
|
||||
if (!found && (is_self || (base_type.is_hard_type() && base_type.kind == GDScriptParser::DataType::BUILTIN))) {
|
||||
String base_name = is_self && !p_call->is_super ? "self" : base_type.to_string();
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
#ifdef SUGGEST_GODOT4_RENAMES
|
||||
String rename_hint = String();
|
||||
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::Code::RENAMED_IN_GD4_HINT)).booleanize()) {
|
||||
const char *renamed_function_name = check_for_renamed_identifier(p_call->function_name, p_call->type);
|
||||
@ -3088,12 +3090,9 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
|
||||
}
|
||||
}
|
||||
push_error(vformat(R"*(Function "%s()" not found in base %s.%s)*", p_call->function_name, base_name, rename_hint), p_call->is_super ? p_call : p_call->callee);
|
||||
#else // !DISABLE_DEPRECATED
|
||||
push_error(vformat(R"*(Function "%s()" not found in base %s.)*", p_call->function_name, base_name), p_call->is_super ? p_call : p_call->callee);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#else
|
||||
push_error(vformat(R"*(Function "%s()" not found in base %s.)*", p_call->function_name, base_name), p_call->is_super ? p_call : p_call->callee);
|
||||
#endif
|
||||
#endif // SUGGEST_GODOT4_RENAMES
|
||||
} else if (!found && (!p_call->is_super && base_type.is_hard_type() && base_type.kind == GDScriptParser::DataType::NATIVE && base_type.is_meta_type)) {
|
||||
push_error(vformat(R"*(Static function "%s()" not found in base "%s".)*", p_call->function_name, base_type.native_type), p_call);
|
||||
}
|
||||
@ -3283,8 +3282,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
|
||||
p_identifier->reduced_value = result;
|
||||
p_identifier->set_datatype(type_from_variant(result, p_identifier));
|
||||
} else if (base.is_hard_type()) {
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
#ifdef SUGGEST_GODOT4_RENAMES
|
||||
String rename_hint = String();
|
||||
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::Code::RENAMED_IN_GD4_HINT)).booleanize()) {
|
||||
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
|
||||
@ -3293,12 +3291,9 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
|
||||
}
|
||||
}
|
||||
push_error(vformat(R"(Cannot find constant "%s" on base "%s".%s)", name, base.to_string(), rename_hint), p_identifier);
|
||||
#else // !DISABLE_DEPRECATED
|
||||
push_error(vformat(R"(Cannot find constant "%s" on base "%s".)", name, base.to_string()), p_identifier);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#else
|
||||
push_error(vformat(R"(Cannot find constant "%s" on base "%s".)", name, base.to_string()), p_identifier);
|
||||
#endif
|
||||
#endif // SUGGEST_GODOT4_RENAMES
|
||||
}
|
||||
} else {
|
||||
switch (base.builtin_type) {
|
||||
@ -3327,8 +3322,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
|
||||
}
|
||||
}
|
||||
if (base.is_hard_type()) {
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
#ifdef SUGGEST_GODOT4_RENAMES
|
||||
String rename_hint = String();
|
||||
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::Code::RENAMED_IN_GD4_HINT)).booleanize()) {
|
||||
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
|
||||
@ -3337,12 +3331,9 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
|
||||
}
|
||||
}
|
||||
push_error(vformat(R"(Cannot find property "%s" on base "%s".%s)", name, base.to_string(), rename_hint), p_identifier);
|
||||
#else // !DISABLE_DEPRECATED
|
||||
push_error(vformat(R"(Cannot find property "%s" on base "%s".)", name, base.to_string()), p_identifier);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#else
|
||||
push_error(vformat(R"(Cannot find property "%s" on base "%s".)", name, base.to_string()), p_identifier);
|
||||
#endif
|
||||
#endif // SUGGEST_GODOT4_RENAMES
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3682,8 +3673,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
|
||||
if (GDScriptUtilityFunctions::function_exists(name)) {
|
||||
push_error(vformat(R"(Built-in function "%s" cannot be used as an identifier.)", name), p_identifier);
|
||||
} else {
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
#ifdef SUGGEST_GODOT4_RENAMES
|
||||
String rename_hint = String();
|
||||
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::Code::RENAMED_IN_GD4_HINT)).booleanize()) {
|
||||
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
|
||||
@ -3692,12 +3682,9 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
|
||||
}
|
||||
}
|
||||
push_error(vformat(R"(Identifier "%s" not declared in the current scope.%s)", name, rename_hint), p_identifier);
|
||||
#else // !DISABLE_DEPRECATED
|
||||
push_error(vformat(R"(Identifier "%s" not declared in the current scope.)", name), p_identifier);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#else
|
||||
push_error(vformat(R"(Identifier "%s" not declared in the current scope.)", name), p_identifier);
|
||||
#endif
|
||||
#endif // SUGGEST_GODOT4_RENAMES
|
||||
}
|
||||
GDScriptParser::DataType dummy;
|
||||
dummy.kind = GDScriptParser::DataType::VARIANT;
|
||||
|
@ -37,10 +37,6 @@
|
||||
#include "gdscript_cache.h"
|
||||
#include "gdscript_parser.h"
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#include "editor/project_converter_3_to_4.h"
|
||||
#endif
|
||||
|
||||
class GDScriptAnalyzer {
|
||||
GDScriptParser *parser = nullptr;
|
||||
HashMap<String, Ref<GDScriptParserRef>> depended_parsers;
|
||||
@ -137,13 +133,6 @@ class GDScriptAnalyzer {
|
||||
bool is_shadowing(GDScriptParser::IdentifierNode *p_local, const String &p_context);
|
||||
#endif
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
const char *get_rename_from_map(const char *map[][2], String key);
|
||||
const char *check_for_renamed_identifier(String identifier, GDScriptParser::Node::Type type);
|
||||
#endif // DISABLE_DEPRECATED
|
||||
#endif // TOOLS_ENABLED
|
||||
|
||||
public:
|
||||
Error resolve_inheritance();
|
||||
Error resolve_interface();
|
||||
|
Loading…
Reference in New Issue
Block a user