Merge pull request #107636 from HolonProduction/completion-dont-use-next

Autocompletion: Don't use `next` for `GET_NODE` inference
This commit is contained in:
Thaddeus Crews 2025-07-01 17:57:59 -05:00
commit bad29ef0c7
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 16 additions and 2 deletions

View file

@ -3147,8 +3147,21 @@ static bool _get_subscript_type(GDScriptParser::CompletionContext &p_context, co
}
} break;
case GDScriptParser::IdentifierNode::Source::LOCAL_VARIABLE: {
if (identifier_node->next != nullptr && identifier_node->next->type == GDScriptParser::ClassNode::Node::GET_NODE) {
get_node = static_cast<GDScriptParser::GetNodeNode *>(identifier_node->next);
// TODO: Do basic assignment flow analysis like in `_guess_expression_type`.
const GDScriptParser::SuiteNode::Local local = identifier_node->suite->get_local(identifier_node->name);
switch (local.type) {
case GDScriptParser::SuiteNode::Local::CONSTANT: {
if (local.constant->initializer && local.constant->initializer->type == GDScriptParser::Node::GET_NODE) {
get_node = static_cast<GDScriptParser::GetNodeNode *>(local.constant->initializer);
}
} break;
case GDScriptParser::SuiteNode::Local::VARIABLE: {
if (local.variable->initializer && local.variable->initializer->type == GDScriptParser::Node::GET_NODE) {
get_node = static_cast<GDScriptParser::GetNodeNode *>(local.variable->initializer);
}
} break;
default: {
} break;
}
} break;
default: {