GDScript: Fix compilation of expressions compiling other classes
This PR is part of ongoing work on fixing cyclic dependencies in the GDScript compiler.
This commit is contained in:
parent
98b50eb308
commit
d330f5642e
2 changed files with 4 additions and 3 deletions
|
@ -3465,7 +3465,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base_set_class(GDScriptParser::Ide
|
||||||
|
|
||||||
p_identifier->set_datatype(p_identifier_datatype);
|
p_identifier->set_datatype(p_identifier_datatype);
|
||||||
Error err = OK;
|
Error err = OK;
|
||||||
Ref<GDScript> scr = GDScriptCache::get_shallow_script(p_identifier_datatype.script_path, err);
|
Ref<GDScript> scr = GDScriptCache::get_shallow_script(p_identifier_datatype.script_path, err, parser->script_path);
|
||||||
if (err) {
|
if (err) {
|
||||||
push_error(vformat(R"(Error while getting cache for script "%s".)", p_identifier_datatype.script_path), p_identifier);
|
push_error(vformat(R"(Error while getting cache for script "%s".)", p_identifier_datatype.script_path), p_identifier);
|
||||||
return;
|
return;
|
||||||
|
@ -4589,7 +4589,7 @@ Array GDScriptAnalyzer::make_array_from_element_datatype(const GDScriptParser::D
|
||||||
Ref<Script> script_type = p_element_datatype.script_type;
|
Ref<Script> script_type = p_element_datatype.script_type;
|
||||||
if (p_element_datatype.kind == GDScriptParser::DataType::CLASS && script_type.is_null()) {
|
if (p_element_datatype.kind == GDScriptParser::DataType::CLASS && script_type.is_null()) {
|
||||||
Error err = OK;
|
Error err = OK;
|
||||||
Ref<GDScript> scr = GDScriptCache::get_shallow_script(p_element_datatype.script_path, err);
|
Ref<GDScript> scr = GDScriptCache::get_shallow_script(p_element_datatype.script_path, err, parser->script_path);
|
||||||
if (err) {
|
if (err) {
|
||||||
push_error(vformat(R"(Error while getting cache for script "%s".)", p_element_datatype.script_path), p_source_node);
|
push_error(vformat(R"(Error while getting cache for script "%s".)", p_element_datatype.script_path), p_source_node);
|
||||||
return array;
|
return array;
|
||||||
|
|
|
@ -402,7 +402,8 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
|
||||||
String global_class_path = ScriptServer::get_global_class_path(identifier);
|
String global_class_path = ScriptServer::get_global_class_path(identifier);
|
||||||
if (ResourceLoader::get_resource_type(global_class_path) == "GDScript") {
|
if (ResourceLoader::get_resource_type(global_class_path) == "GDScript") {
|
||||||
Error err = OK;
|
Error err = OK;
|
||||||
res = GDScriptCache::get_full_script(global_class_path, err);
|
// Should not need to pass p_owner since analyzer will already have done it.
|
||||||
|
res = GDScriptCache::get_shallow_script(global_class_path, err);
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
_set_error("Can't load global class " + String(identifier), p_expression);
|
_set_error("Can't load global class " + String(identifier), p_expression);
|
||||||
r_error = ERR_COMPILATION_FAILED;
|
r_error = ERR_COMPILATION_FAILED;
|
||||||
|
|
Loading…
Reference in a new issue