GDScript: Set status on parsing steps beforehand

To avoid potential dependency cycles. If any happens it will not get
into infinite recursion anymore and errors will cascade later on.
This commit is contained in:
George Marques 2021-10-05 09:56:59 -03:00
parent 69f80b6631
commit dfe3a2fad0
No known key found for this signature in database
GPG key ID: 046BD46A3201E43D

View file

@ -58,27 +58,27 @@ Error GDScriptParserRef::raise_status(Status p_new_status) {
while (p_new_status > status) {
switch (status) {
case EMPTY:
result = parser->parse(GDScriptCache::get_source_code(path), path, false);
status = PARSED;
result = parser->parse(GDScriptCache::get_source_code(path), path, false);
break;
case PARSED: {
analyzer = memnew(GDScriptAnalyzer(parser));
Error inheritance_result = analyzer->resolve_inheritance();
status = INHERITANCE_SOLVED;
Error inheritance_result = analyzer->resolve_inheritance();
if (result == OK) {
result = inheritance_result;
}
} break;
case INHERITANCE_SOLVED: {
Error interface_result = analyzer->resolve_interface();
status = INTERFACE_SOLVED;
Error interface_result = analyzer->resolve_interface();
if (result == OK) {
result = interface_result;
}
} break;
case INTERFACE_SOLVED: {
Error body_result = analyzer->resolve_body();
status = FULLY_SOLVED;
Error body_result = analyzer->resolve_body();
if (result == OK) {
result = body_result;
}