Fix a crash in GDScriptAnalyzer when a script class's file is not found
This commit is contained in:
parent
0b7bc3fd90
commit
7ae988ce5e
1 changed files with 12 additions and 6 deletions
|
@ -2575,18 +2575,24 @@ void GDScriptAnalyzer::reduce_get_node(GDScriptParser::GetNodeNode *p_get_node)
|
|||
}
|
||||
|
||||
GDScriptParser::DataType GDScriptAnalyzer::make_global_class_meta_type(const StringName &p_class_name, const GDScriptParser::Node *p_source) {
|
||||
Ref<GDScriptParserRef> ref = get_parser_for(ScriptServer::get_global_class_path(p_class_name));
|
||||
Error err = ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED);
|
||||
GDScriptParser::DataType type;
|
||||
|
||||
if (err) {
|
||||
push_error(vformat(R"(Could not resolve class "%s", because of a parser error.)", p_class_name), p_source);
|
||||
GDScriptParser::DataType type;
|
||||
Ref<GDScriptParserRef> ref = get_parser_for(ScriptServer::get_global_class_path(p_class_name));
|
||||
if (ref.is_null()) {
|
||||
push_error(vformat(R"(Could not find script for class "%s".)", p_class_name), p_source);
|
||||
type.type_source = GDScriptParser::DataType::UNDETECTED;
|
||||
type.kind = GDScriptParser::DataType::VARIANT;
|
||||
return type;
|
||||
}
|
||||
|
||||
Error err = ref->raise_status(GDScriptParserRef::INTERFACE_SOLVED);
|
||||
if (err) {
|
||||
push_error(vformat(R"(Could not resolve class "%s", because of a parser error.)", p_class_name), p_source);
|
||||
type.type_source = GDScriptParser::DataType::UNDETECTED;
|
||||
type.kind = GDScriptParser::DataType::VARIANT;
|
||||
return type;
|
||||
}
|
||||
|
||||
GDScriptParser::DataType type;
|
||||
type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
|
||||
type.kind = GDScriptParser::DataType::CLASS;
|
||||
type.builtin_type = Variant::OBJECT;
|
||||
|
|
Loading…
Reference in a new issue