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

GDScript: Properly detect native class on static call optimization

This commit is contained in:
George Marques
2025-07-24 15:08:18 -03:00
parent e0603aeda3
commit 38f8643b00
4 changed files with 8 additions and 2 deletions

View File

@@ -4437,6 +4437,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
case GDScriptParser::IdentifierNode::UNDEFINED_SOURCE:
case GDScriptParser::IdentifierNode::MEMBER_FUNCTION:
case GDScriptParser::IdentifierNode::MEMBER_CLASS:
case GDScriptParser::IdentifierNode::NATIVE_CLASS:
break;
}
@@ -4507,6 +4508,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
case GDScriptParser::IdentifierNode::MEMBER_CLASS:
case GDScriptParser::IdentifierNode::INHERITED_VARIABLE:
case GDScriptParser::IdentifierNode::STATIC_VARIABLE:
case GDScriptParser::IdentifierNode::NATIVE_CLASS:
return; // No need to capture.
}
@@ -4539,6 +4541,7 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
}
if (class_exists(name)) {
p_identifier->source = GDScriptParser::IdentifierNode::NATIVE_CLASS;
p_identifier->set_datatype(make_native_meta_type(name));
return;
}
@@ -5990,7 +5993,7 @@ void GDScriptAnalyzer::is_shadowing(GDScriptParser::IdentifierNode *p_identifier
if (Variant::has_utility_function(name)) {
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "built-in function");
return;
} else if (ClassDB::class_exists(name)) {
} else if (class_exists(name)) {
parser->push_warning(p_identifier, GDScriptWarning::SHADOWED_GLOBAL_IDENTIFIER, p_context, name, "native class");
return;
} else if (ScriptServer::is_global_class(name)) {