|
|
|
|
@ -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) {
|
|
|
|
|
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
|
|
|
|
|
r_result.class_name = "@GDScript";
|
|
|
|
|
@ -3283,11 +3274,24 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
|
|
|
|
|
|
|
|
|
|
GDScriptParser parser;
|
|
|
|
|
parser.parse(p_code, p_path, true);
|
|
|
|
|
GDScriptAnalyzer analyzer(&parser);
|
|
|
|
|
analyzer.analyze();
|
|
|
|
|
|
|
|
|
|
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) {
|
|
|
|
|
bool success = false;
|
|
|
|
|
ClassDB::get_integer_constant(context.current_class->extends[0], p_symbol, &success);
|
|
|
|
|
|