mirror of
https://github.com/godotengine/godot.git
synced 2024-12-09 10:09:20 +08:00
Merge pull request #80587 from garychia/shadowed_class_name
Check if any global script class is shadowed by a variable
This commit is contained in:
commit
10c3941a9a
@ -5036,7 +5036,11 @@ void GDScriptAnalyzer::is_shadowing(GDScriptParser::IdentifierNode *p_identifier
|
||||
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "built-in function");
|
||||
return;
|
||||
} else if (ClassDB::class_exists(name)) {
|
||||
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "global class");
|
||||
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "native class");
|
||||
return;
|
||||
} else if (ScriptServer::is_global_class(name)) {
|
||||
String class_path = ScriptServer::get_global_class_path(name).get_file();
|
||||
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, vformat(R"(global class defined in "%s")", class_path));
|
||||
return;
|
||||
} else if (GDScriptParser::get_builtin_type(name) != Variant::VARIANT_MAX) {
|
||||
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "built-in type");
|
||||
|
@ -1,3 +1,5 @@
|
||||
class_name ShadowedClass
|
||||
|
||||
var member: int = 0
|
||||
|
||||
var print_debug := 'print_debug'
|
||||
@ -12,5 +14,6 @@ func test():
|
||||
var sqrt := 'sqrt'
|
||||
var member := 'member'
|
||||
var reference := 'reference'
|
||||
var ShadowedClass := 'ShadowedClass'
|
||||
|
||||
print('warn')
|
||||
|
@ -1,30 +1,34 @@
|
||||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 3
|
||||
>> Line: 5
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "print_debug" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 9
|
||||
>> Line: 11
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "Array" has the same name as a built-in type.
|
||||
>> WARNING
|
||||
>> Line: 10
|
||||
>> Line: 12
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "Node" has the same name as a global class.
|
||||
>> The variable "Node" has the same name as a native class.
|
||||
>> WARNING
|
||||
>> Line: 11
|
||||
>> Line: 13
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "is_same" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 12
|
||||
>> Line: 14
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "sqrt" has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 13
|
||||
>> Line: 15
|
||||
>> SHADOWED_VARIABLE
|
||||
>> The local variable "member" is shadowing an already-declared variable at line 1.
|
||||
>> The local variable "member" is shadowing an already-declared variable at line 3.
|
||||
>> WARNING
|
||||
>> Line: 14
|
||||
>> Line: 16
|
||||
>> SHADOWED_VARIABLE_BASE_CLASS
|
||||
>> The local variable "reference" is shadowing an already-declared method at the base class "RefCounted".
|
||||
>> WARNING
|
||||
>> Line: 17
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable "ShadowedClass" has the same name as a global class defined in "shadowning.gd".
|
||||
warn
|
||||
|
Loading…
Reference in New Issue
Block a user