You've already forked godot
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:
@@ -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">
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user