Merge pull request #85215 from HolonProduction/type-from-property-class-name
Handle global classes when resolving type from `PropertyInfo`
This commit is contained in:
commit
b5dcb5f58a
2 changed files with 26 additions and 4 deletions
|
@ -4908,8 +4908,19 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_property(const PropertyInfo
|
||||||
}
|
}
|
||||||
result.builtin_type = p_property.type;
|
result.builtin_type = p_property.type;
|
||||||
if (p_property.type == Variant::OBJECT) {
|
if (p_property.type == Variant::OBJECT) {
|
||||||
|
if (ScriptServer::is_global_class(p_property.class_name)) {
|
||||||
|
result.kind = GDScriptParser::DataType::SCRIPT;
|
||||||
|
result.script_path = ScriptServer::get_global_class_path(p_property.class_name);
|
||||||
|
result.native_type = ScriptServer::get_global_class_native_base(p_property.class_name);
|
||||||
|
|
||||||
|
Ref<Script> scr = ResourceLoader::load(ScriptServer::get_global_class_path(p_property.class_name));
|
||||||
|
if (scr.is_valid()) {
|
||||||
|
result.script_type = scr;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
result.kind = GDScriptParser::DataType::NATIVE;
|
result.kind = GDScriptParser::DataType::NATIVE;
|
||||||
result.native_type = p_property.class_name == StringName() ? SNAME("Object") : p_property.class_name;
|
result.native_type = p_property.class_name == StringName() ? "Object" : p_property.class_name;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
result.kind = GDScriptParser::DataType::BUILTIN;
|
result.kind = GDScriptParser::DataType::BUILTIN;
|
||||||
result.builtin_type = p_property.type;
|
result.builtin_type = p_property.type;
|
||||||
|
|
|
@ -1432,8 +1432,19 @@ static GDScriptCompletionIdentifier _type_from_property(const PropertyInfo &p_pr
|
||||||
ci.type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
|
ci.type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
|
||||||
ci.type.builtin_type = p_property.type;
|
ci.type.builtin_type = p_property.type;
|
||||||
if (p_property.type == Variant::OBJECT) {
|
if (p_property.type == Variant::OBJECT) {
|
||||||
|
if (ScriptServer::is_global_class(p_property.class_name)) {
|
||||||
|
ci.type.kind = GDScriptParser::DataType::SCRIPT;
|
||||||
|
ci.type.script_path = ScriptServer::get_global_class_path(p_property.class_name);
|
||||||
|
ci.type.native_type = ScriptServer::get_global_class_native_base(p_property.class_name);
|
||||||
|
|
||||||
|
Ref<Script> scr = ResourceLoader::load(ScriptServer::get_global_class_path(p_property.class_name));
|
||||||
|
if (scr.is_valid()) {
|
||||||
|
ci.type.script_type = scr;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
ci.type.kind = GDScriptParser::DataType::NATIVE;
|
ci.type.kind = GDScriptParser::DataType::NATIVE;
|
||||||
ci.type.native_type = p_property.class_name == StringName() ? "Object" : p_property.class_name;
|
ci.type.native_type = p_property.class_name == StringName() ? "Object" : p_property.class_name;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ci.type.kind = GDScriptParser::DataType::BUILTIN;
|
ci.type.kind = GDScriptParser::DataType::BUILTIN;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue