@@ -1333,7 +1333,7 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
13331333 r_result.insert (option.display , option);
13341334 }
13351335
1336- if (clss->base_type .kind == GDScriptParser::DataType:: CLASS && clss-> base_type . class_type ) {
1336+ if (clss->base_type .is_set () ) {
13371337 GDScriptCompletionIdentifier base_type;
13381338 base_type.type = clss->base_type ;
13391339 base_type.type .is_meta_type = p_static && !outer;
@@ -2632,6 +2632,7 @@ static bool _guess_identifier_type_from_class(GDScriptParser::CompletionContext
26322632 ERR_FAIL_COND_V_MSG (recursion.check (), false , " Reached recursion limit while trying to guess type." );
26332633
26342634 const GDScriptParser::ClassNode *clss = p_class;
2635+ bool outer = false ;
26352636 while (clss) {
26362637 if (clss->has_member (p_identifier)) {
26372638 const GDScriptParser::ClassNode::Member &member = clss->get_member (p_identifier);
@@ -2705,14 +2706,15 @@ static bool _guess_identifier_type_from_class(GDScriptParser::CompletionContext
27052706 }
27062707 return false ;
27072708 }
2708- if (clss->base_type .class_type != nullptr ) {
2709+ if (clss->base_type .is_set () ) {
27092710 GDScriptCompletionIdentifier base;
27102711 base.type = clss->base_type ;
2711- base.type .is_meta_type = p_static;
2712+ base.type .is_meta_type = p_static && !outer ;
27122713 if (_guess_identifier_type_from_base (p_context, base, p_identifier, r_type)) {
27132714 return true ;
27142715 }
27152716 }
2717+ outer = true ;
27162718 clss = clss->outer ;
27172719 }
27182720 return false ;
0 commit comments