1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-09 12:50:35 +00:00

Merge pull request #92526 from dalexeev/gds-remove-renamed-hint-from-warning-enum

GDScript: Remove `RENAMED_IN_GODOT_4_HINT` from `GDScriptWarning::Code` enum
This commit is contained in:
Rémi Verschelde
2025-01-09 20:51:21 +01:00
8 changed files with 16 additions and 18 deletions

View File

@@ -551,7 +551,7 @@
<member name="debug/gdscript/warnings/redundant_static_unload" type="int" setter="" getter="" default="1"> <member name="debug/gdscript/warnings/redundant_static_unload" type="int" setter="" getter="" default="1">
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when the [code]@static_unload[/code] annotation is used in a script without any static variables. When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when the [code]@static_unload[/code] annotation is used in a script without any static variables.
</member> </member>
<member name="debug/gdscript/warnings/renamed_in_godot_4_hint" type="bool" setter="" getter="" default="1"> <member name="debug/gdscript/warnings/renamed_in_godot_4_hint" type="bool" setter="" getter="" default="true">
When enabled, using a property, enum, or function that was renamed since Godot 3 will produce a hint if an error occurs. When enabled, using a property, enum, or function that was renamed since Godot 3 will produce a hint if an error occurs.
</member> </member>
<member name="debug/gdscript/warnings/return_value_discarded" type="int" setter="" getter="" default="0"> <member name="debug/gdscript/warnings/return_value_discarded" type="int" setter="" getter="" default="0">

View File

@@ -579,7 +579,7 @@ void ScriptTextEditor::_update_warnings() {
bool has_connections_table = false; bool has_connections_table = false;
// Add missing connections. // Add missing connections.
if (GLOBAL_GET("debug/gdscript/warnings/enable").booleanize()) { if (GLOBAL_GET("debug/gdscript/warnings/enable")) {
Node *base = get_tree()->get_edited_scene_root(); Node *base = get_tree()->get_edited_scene_root();
if (base && missing_connections.size() > 0) { if (base && missing_connections.size() > 0) {
has_connections_table = true; has_connections_table = true;

View File

@@ -2972,6 +2972,7 @@ GDScriptLanguage::GDScriptLanguage() {
#ifdef DEBUG_ENABLED #ifdef DEBUG_ENABLED
GLOBAL_DEF("debug/gdscript/warnings/enable", true); GLOBAL_DEF("debug/gdscript/warnings/enable", true);
GLOBAL_DEF("debug/gdscript/warnings/exclude_addons", true); GLOBAL_DEF("debug/gdscript/warnings/exclude_addons", true);
GLOBAL_DEF("debug/gdscript/warnings/renamed_in_godot_4_hint", true);
for (int i = 0; i < (int)GDScriptWarning::WARNING_MAX; i++) { for (int i = 0; i < (int)GDScriptWarning::WARNING_MAX; i++) {
GDScriptWarning::Code code = (GDScriptWarning::Code)i; GDScriptWarning::Code code = (GDScriptWarning::Code)i;
Variant default_enabled = GDScriptWarning::get_default_value(code); Variant default_enabled = GDScriptWarning::get_default_value(code);

View File

@@ -3690,7 +3690,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
String base_name = is_self && !p_call->is_super ? "self" : base_type.to_string(); String base_name = is_self && !p_call->is_super ? "self" : base_type.to_string();
#ifdef SUGGEST_GODOT4_RENAMES #ifdef SUGGEST_GODOT4_RENAMES
String rename_hint; String rename_hint;
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::RENAMED_IN_GODOT_4_HINT)).booleanize()) { if (GLOBAL_GET("debug/gdscript/warnings/renamed_in_godot_4_hint")) {
const char *renamed_function_name = check_for_renamed_identifier(p_call->function_name, p_call->type); const char *renamed_function_name = check_for_renamed_identifier(p_call->function_name, p_call->type);
if (renamed_function_name) { if (renamed_function_name) {
rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", String(renamed_function_name) + "()"); rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", String(renamed_function_name) + "()");
@@ -4036,7 +4036,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
if (!valid && base.is_hard_type()) { if (!valid && base.is_hard_type()) {
#ifdef SUGGEST_GODOT4_RENAMES #ifdef SUGGEST_GODOT4_RENAMES
String rename_hint; String rename_hint;
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::RENAMED_IN_GODOT_4_HINT)).booleanize()) { if (GLOBAL_GET("debug/gdscript/warnings/renamed_in_godot_4_hint")) {
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type); const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
if (renamed_identifier_name) { if (renamed_identifier_name) {
rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name); rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name);
@@ -4080,7 +4080,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
if (base.is_hard_type()) { if (base.is_hard_type()) {
#ifdef SUGGEST_GODOT4_RENAMES #ifdef SUGGEST_GODOT4_RENAMES
String rename_hint; String rename_hint;
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::RENAMED_IN_GODOT_4_HINT)).booleanize()) { if (GLOBAL_GET("debug/gdscript/warnings/renamed_in_godot_4_hint")) {
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type); const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
if (renamed_identifier_name) { if (renamed_identifier_name) {
rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name); rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name);
@@ -4596,7 +4596,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
// Not found. // Not found.
#ifdef SUGGEST_GODOT4_RENAMES #ifdef SUGGEST_GODOT4_RENAMES
String rename_hint; String rename_hint;
if (GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(GDScriptWarning::RENAMED_IN_GODOT_4_HINT)).booleanize()) { if (GLOBAL_GET("debug/gdscript/warnings/renamed_in_godot_4_hint")) {
const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type); const char *renamed_identifier_name = check_for_renamed_identifier(name, p_identifier->type);
if (renamed_identifier_name) { if (renamed_identifier_name) {
rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name); rename_hint = " " + vformat(R"(Did you mean to use "%s"?)", renamed_identifier_name);

View File

@@ -964,9 +964,11 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a
} }
} else if (p_annotation->name == SNAME("@warning_ignore") || p_annotation->name == SNAME("@warning_ignore_start") || p_annotation->name == SNAME("@warning_ignore_restore")) { } else if (p_annotation->name == SNAME("@warning_ignore") || p_annotation->name == SNAME("@warning_ignore_start") || p_annotation->name == SNAME("@warning_ignore_restore")) {
for (int warning_code = 0; warning_code < GDScriptWarning::WARNING_MAX; warning_code++) { for (int warning_code = 0; warning_code < GDScriptWarning::WARNING_MAX; warning_code++) {
if (warning_code == GDScriptWarning::RENAMED_IN_GODOT_4_HINT) { #ifndef DISABLE_DEPRECATED
continue; if (warning_code >= GDScriptWarning::FIRST_DEPRECATED_WARNING) {
break; // Don't suggest deprecated warnings as they are never produced.
} }
#endif
ScriptLanguage::CodeCompletionOption warning(GDScriptWarning::get_name_from_code((GDScriptWarning::Code)warning_code).to_lower(), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT); ScriptLanguage::CodeCompletionOption warning(GDScriptWarning::get_name_from_code((GDScriptWarning::Code)warning_code).to_lower(), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
warning.insert_text = warning.display.quote(p_quote_style); warning.insert_text = warning.display.quote(p_quote_style);
r_result.insert(warning.display, warning); r_result.insert(warning.display, warning);

View File

@@ -196,7 +196,7 @@ void GDScriptParser::push_warning(const Node *p_source, GDScriptWarning::Code p_
if (is_ignoring_warnings) { if (is_ignoring_warnings) {
return; return;
} }
if (GLOBAL_GET("debug/gdscript/warnings/exclude_addons").booleanize() && script_path.begins_with("res://addons/")) { if (GLOBAL_GET("debug/gdscript/warnings/exclude_addons") && script_path.begins_with("res://addons/")) {
return; return;
} }
GDScriptWarning::WarnLevel warn_level = (GDScriptWarning::WarnLevel)(int)GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(p_code)); GDScriptWarning::WarnLevel warn_level = (GDScriptWarning::WarnLevel)(int)GLOBAL_GET(GDScriptWarning::get_settings_path_from_code(p_code));

View File

@@ -139,8 +139,6 @@ String GDScriptWarning::get_message() const {
case DEPRECATED_KEYWORD: case DEPRECATED_KEYWORD:
CHECK_SYMBOLS(2); CHECK_SYMBOLS(2);
return vformat(R"(The "%s" keyword is deprecated and will be removed in a future release, please replace its uses by "%s".)", symbols[0], symbols[1]); return vformat(R"(The "%s" keyword is deprecated and will be removed in a future release, please replace its uses by "%s".)", symbols[0], symbols[1]);
case RENAMED_IN_GODOT_4_HINT:
break; // Renamed identifier hint is taken care of by the GDScriptAnalyzer. No message needed here.
case CONFUSABLE_IDENTIFIER: case CONFUSABLE_IDENTIFIER:
CHECK_SYMBOLS(1); CHECK_SYMBOLS(1);
return vformat(R"(The identifier "%s" has misleading characters and might be confused with something else.)", symbols[0]); return vformat(R"(The identifier "%s" has misleading characters and might be confused with something else.)", symbols[0]);
@@ -185,10 +183,6 @@ int GDScriptWarning::get_default_value(Code p_code) {
} }
PropertyInfo GDScriptWarning::get_property_info(Code p_code) { PropertyInfo GDScriptWarning::get_property_info(Code p_code) {
// Making this a separate function in case a warning needs different PropertyInfo in the future.
if (p_code == Code::RENAMED_IN_GODOT_4_HINT) {
return PropertyInfo(Variant::BOOL, get_settings_path_from_code(p_code));
}
return PropertyInfo(Variant::INT, get_settings_path_from_code(p_code), PROPERTY_HINT_ENUM, "Ignore,Warn,Error"); return PropertyInfo(Variant::INT, get_settings_path_from_code(p_code), PROPERTY_HINT_ENUM, "Ignore,Warn,Error");
} }
@@ -236,7 +230,6 @@ String GDScriptWarning::get_name_from_code(Code p_code) {
"ENUM_VARIABLE_WITHOUT_DEFAULT", "ENUM_VARIABLE_WITHOUT_DEFAULT",
"EMPTY_FILE", "EMPTY_FILE",
"DEPRECATED_KEYWORD", "DEPRECATED_KEYWORD",
"RENAMED_IN_GODOT_4_HINT",
"CONFUSABLE_IDENTIFIER", "CONFUSABLE_IDENTIFIER",
"CONFUSABLE_LOCAL_DECLARATION", "CONFUSABLE_LOCAL_DECLARATION",
"CONFUSABLE_LOCAL_USAGE", "CONFUSABLE_LOCAL_USAGE",

View File

@@ -82,7 +82,6 @@ public:
ENUM_VARIABLE_WITHOUT_DEFAULT, // A variable with an enum type does not have a default value. The default will be set to `0` instead of the first enum value. ENUM_VARIABLE_WITHOUT_DEFAULT, // A variable with an enum type does not have a default value. The default will be set to `0` instead of the first enum value.
EMPTY_FILE, // A script file is empty. EMPTY_FILE, // A script file is empty.
DEPRECATED_KEYWORD, // The keyword is deprecated and should be replaced. DEPRECATED_KEYWORD, // The keyword is deprecated and should be replaced.
RENAMED_IN_GODOT_4_HINT, // A variable or function that could not be found has been renamed in Godot 4.
CONFUSABLE_IDENTIFIER, // The identifier contains misleading characters that can be confused. E.g. "usеr" (has Cyrillic "е" instead of Latin "e"). CONFUSABLE_IDENTIFIER, // The identifier contains misleading characters that can be confused. E.g. "usеr" (has Cyrillic "е" instead of Latin "e").
CONFUSABLE_LOCAL_DECLARATION, // The parent block declares an identifier with the same name below. CONFUSABLE_LOCAL_DECLARATION, // The parent block declares an identifier with the same name below.
CONFUSABLE_LOCAL_USAGE, // The identifier will be shadowed below in the block. CONFUSABLE_LOCAL_USAGE, // The identifier will be shadowed below in the block.
@@ -99,6 +98,10 @@ public:
WARNING_MAX, WARNING_MAX,
}; };
#ifndef DISABLE_DEPRECATED
static constexpr int FIRST_DEPRECATED_WARNING = PROPERTY_USED_AS_FUNCTION;
#endif
constexpr static WarnLevel default_warning_levels[] = { constexpr static WarnLevel default_warning_levels[] = {
WARN, // UNASSIGNED_VARIABLE WARN, // UNASSIGNED_VARIABLE
WARN, // UNASSIGNED_VARIABLE_OP_ASSIGN WARN, // UNASSIGNED_VARIABLE_OP_ASSIGN
@@ -136,7 +139,6 @@ public:
WARN, // ENUM_VARIABLE_WITHOUT_DEFAULT WARN, // ENUM_VARIABLE_WITHOUT_DEFAULT
WARN, // EMPTY_FILE WARN, // EMPTY_FILE
WARN, // DEPRECATED_KEYWORD WARN, // DEPRECATED_KEYWORD
WARN, // RENAMED_IN_GODOT_4_HINT
WARN, // CONFUSABLE_IDENTIFIER WARN, // CONFUSABLE_IDENTIFIER
WARN, // CONFUSABLE_LOCAL_DECLARATION WARN, // CONFUSABLE_LOCAL_DECLARATION
WARN, // CONFUSABLE_LOCAL_USAGE WARN, // CONFUSABLE_LOCAL_USAGE