mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Merge pull request #55889 from Chaosus/fix_warning_duplication
This commit is contained in:
commit
7b675da618
@ -3691,9 +3691,27 @@ bool GDScriptAnalyzer::validate_call_arg(const List<GDScriptParser::DataType> &p
|
||||
bool GDScriptAnalyzer::is_shadowing(GDScriptParser::IdentifierNode *p_local, const String &p_context) {
|
||||
const StringName &name = p_local->name;
|
||||
GDScriptParser::DataType base = parser->current_class->get_datatype();
|
||||
|
||||
GDScriptParser::ClassNode *base_class = base.class_type;
|
||||
|
||||
{
|
||||
List<MethodInfo> gdscript_funcs;
|
||||
GDScriptLanguage::get_singleton()->get_public_functions(&gdscript_funcs);
|
||||
|
||||
for (MethodInfo &info : gdscript_funcs) {
|
||||
if (info.name == name) {
|
||||
parser->push_warning(p_local, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "built-in function");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (Variant::has_utility_function(name)) {
|
||||
parser->push_warning(p_local, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "built-in function");
|
||||
return true;
|
||||
} else if (ClassDB::class_exists(name)) {
|
||||
parser->push_warning(p_local, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "global class");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
while (base_class != nullptr) {
|
||||
if (base_class->has_member(name)) {
|
||||
parser->push_warning(p_local, GDScriptWarning::SHADOWED_VARIABLE, p_context, p_local->name, base_class->get_member(name).get_type_name(), itos(base_class->get_member(name).get_line()));
|
||||
|
@ -827,24 +827,9 @@ GDScriptParser::VariableNode *GDScriptParser::parse_variable(bool p_allow_proper
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GDScriptParser::IdentifierNode *identifier = parse_identifier();
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
List<MethodInfo> gdscript_funcs;
|
||||
GDScriptLanguage::get_singleton()->get_public_functions(&gdscript_funcs);
|
||||
for (MethodInfo &info : gdscript_funcs) {
|
||||
if (info.name == identifier->name) {
|
||||
push_warning(identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, "local variable", identifier->name, "built-in function");
|
||||
}
|
||||
}
|
||||
if (Variant::has_utility_function(identifier->name)) {
|
||||
push_warning(identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, "local variable", identifier->name, "built-in function");
|
||||
}
|
||||
#endif
|
||||
|
||||
VariableNode *variable = alloc_node<VariableNode>();
|
||||
variable->identifier = identifier;
|
||||
variable->export_info.name = identifier->name;
|
||||
variable->identifier = parse_identifier();
|
||||
variable->export_info.name = variable->identifier->name;
|
||||
|
||||
if (match(GDScriptTokenizer::Token::COLON)) {
|
||||
if (check(GDScriptTokenizer::Token::NEWLINE)) {
|
||||
@ -1097,24 +1082,8 @@ GDScriptParser::ParameterNode *GDScriptParser::parse_parameter() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GDScriptParser::IdentifierNode *identifier = parse_identifier();
|
||||
#ifdef DEBUG_ENABLED
|
||||
List<MethodInfo> gdscript_funcs;
|
||||
GDScriptLanguage::get_singleton()->get_public_functions(&gdscript_funcs);
|
||||
for (MethodInfo &info : gdscript_funcs) {
|
||||
if (info.name == identifier->name) {
|
||||
push_warning(identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, "parameter", identifier->name, "built-in function");
|
||||
}
|
||||
}
|
||||
if (Variant::has_utility_function(identifier->name)) {
|
||||
push_warning(identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, "parameter", identifier->name, "built-in function");
|
||||
} else if (ClassDB::class_exists(identifier->name)) {
|
||||
push_warning(identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, "parameter", identifier->name, "global class");
|
||||
}
|
||||
#endif
|
||||
|
||||
ParameterNode *parameter = alloc_node<ParameterNode>();
|
||||
parameter->identifier = identifier;
|
||||
parameter->identifier = parse_identifier();
|
||||
|
||||
if (match(GDScriptTokenizer::Token::COLON)) {
|
||||
if (check((GDScriptTokenizer::Token::EQUAL))) {
|
||||
|
@ -1,9 +1,9 @@
|
||||
GDTEST_OK
|
||||
>> WARNING
|
||||
>> Line: 2
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The local variable 'abs' has the same name as a built-in function.
|
||||
>> WARNING
|
||||
>> Line: 2
|
||||
>> UNUSED_VARIABLE
|
||||
>> The local variable 'abs' is declared but never used in the block. If this is intended, prefix it with an underscore: '_abs'
|
||||
>> WARNING
|
||||
>> Line: 2
|
||||
>> SHADOWED_GLOBAL_IDENTIFIER
|
||||
>> The variable 'abs' has the same name as a built-in function.
|
||||
|
Loading…
Reference in New Issue
Block a user