1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

GDScript: Fix infinite loop in autocomplete

It happened when the definition of the variable contained the variable
itself.
This commit is contained in:
George Marques
2018-09-10 19:29:25 -03:00
parent e6a6ea65c7
commit 726e836cd9

View File

@@ -1376,11 +1376,11 @@ static bool _guess_identifier_type_from_base(const GDScriptCompletionContext &p_
for (int i = 0; i < base_type.class_type->variables.size(); i++) {
GDScriptParser::ClassNode::Member m = base_type.class_type->variables[i];
if (m.identifier == p_identifier) {
if (m.data_type.has_type) {
r_type.type = m.data_type;
return true;
}
if (m.expression) {
if (p_context.line == m.expression->line) {
// Variable used in the same expression
return false;
}
if (_guess_expression_type(p_context, m.expression, r_type)) {
return true;
}
@@ -1389,6 +1389,10 @@ static bool _guess_identifier_type_from_base(const GDScriptCompletionContext &p_
return true;
}
}
if (m.data_type.has_type) {
r_type.type = m.data_type;
return true;
}
return false;
}
}