Merge pull request #29145 from GodotExplorer/gdscript-extend-fix
Fix parse error when inherits from subclass of named classes
This commit is contained in:
commit
b09ed50020
1 changed files with 4 additions and 3 deletions
|
@ -5248,6 +5248,7 @@ void GDScriptParser::_determine_inheritance(ClassNode *p_class) {
|
||||||
if (base_script.is_valid()) {
|
if (base_script.is_valid()) {
|
||||||
|
|
||||||
String ident = base;
|
String ident = base;
|
||||||
|
Ref<GDScript> find_subclass = base_script;
|
||||||
|
|
||||||
for (int i = extend_iter; i < p_class->extends_class.size(); i++) {
|
for (int i = extend_iter; i < p_class->extends_class.size(); i++) {
|
||||||
|
|
||||||
|
@ -5257,7 +5258,7 @@ void GDScriptParser::_determine_inheritance(ClassNode *p_class) {
|
||||||
|
|
||||||
if (base_script->get_subclasses().has(subclass)) {
|
if (base_script->get_subclasses().has(subclass)) {
|
||||||
|
|
||||||
base_script = base_script->get_subclasses()[subclass];
|
find_subclass = base_script->get_subclasses()[subclass];
|
||||||
} else if (base_script->get_constants().has(subclass)) {
|
} else if (base_script->get_constants().has(subclass)) {
|
||||||
|
|
||||||
Ref<GDScript> new_base_class = base_script->get_constants()[subclass];
|
Ref<GDScript> new_base_class = base_script->get_constants()[subclass];
|
||||||
|
@ -5265,7 +5266,7 @@ void GDScriptParser::_determine_inheritance(ClassNode *p_class) {
|
||||||
_set_error("Constant is not a class: " + ident, p_class->line);
|
_set_error("Constant is not a class: " + ident, p_class->line);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
base_script = new_base_class;
|
find_subclass = new_base_class;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
_set_error("Could not find subclass: " + ident, p_class->line);
|
_set_error("Could not find subclass: " + ident, p_class->line);
|
||||||
|
@ -5273,7 +5274,7 @@ void GDScriptParser::_determine_inheritance(ClassNode *p_class) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
script = base_script;
|
script = find_subclass;
|
||||||
|
|
||||||
} else if (!base_class) {
|
} else if (!base_class) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue