Fix lookup code to pass functions with the same name as built-ins
This commit is contained in:
parent
166066d9f7
commit
afbea19a22
|
@ -3265,15 +3265,6 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need special checks for assert and preload as they are technically
|
|
||||||
// keywords, so are not registered in GDScriptUtilityFunctions.
|
|
||||||
if (GDScriptUtilityFunctions::function_exists(p_symbol) || "assert" == p_symbol || "preload" == p_symbol) {
|
|
||||||
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
|
|
||||||
r_result.class_name = "@GDScript";
|
|
||||||
r_result.class_member = p_symbol;
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ("PI" == p_symbol || "TAU" == p_symbol || "INF" == p_symbol || "NAN" == p_symbol) {
|
if ("PI" == p_symbol || "TAU" == p_symbol || "INF" == p_symbol || "NAN" == p_symbol) {
|
||||||
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
|
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
|
||||||
r_result.class_name = "@GDScript";
|
r_result.class_name = "@GDScript";
|
||||||
|
@ -3283,11 +3274,24 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
|
||||||
|
|
||||||
GDScriptParser parser;
|
GDScriptParser parser;
|
||||||
parser.parse(p_code, p_path, true);
|
parser.parse(p_code, p_path, true);
|
||||||
GDScriptAnalyzer analyzer(&parser);
|
|
||||||
analyzer.analyze();
|
|
||||||
|
|
||||||
GDScriptParser::CompletionContext context = parser.get_completion_context();
|
GDScriptParser::CompletionContext context = parser.get_completion_context();
|
||||||
|
|
||||||
|
// Allows class functions with the names like built-ins to be handled properly.
|
||||||
|
if (context.type != GDScriptParser::COMPLETION_ATTRIBUTE) {
|
||||||
|
// Need special checks for assert and preload as they are technically
|
||||||
|
// keywords, so are not registered in GDScriptUtilityFunctions.
|
||||||
|
if (GDScriptUtilityFunctions::function_exists(p_symbol) || "assert" == p_symbol || "preload" == p_symbol) {
|
||||||
|
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
|
||||||
|
r_result.class_name = "@GDScript";
|
||||||
|
r_result.class_member = p_symbol;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GDScriptAnalyzer analyzer(&parser);
|
||||||
|
analyzer.analyze();
|
||||||
|
|
||||||
if (context.current_class && context.current_class->extends.size() > 0) {
|
if (context.current_class && context.current_class->extends.size() > 0) {
|
||||||
bool success = false;
|
bool success = false;
|
||||||
ClassDB::get_integer_constant(context.current_class->extends[0], p_symbol, &success);
|
ClassDB::get_integer_constant(context.current_class->extends[0], p_symbol, &success);
|
||||||
|
|
Loading…
Reference in New Issue