Fix Script editor completion doesn't suggest members of a script for type hints

(cherry picked from commit 7afbd5904e)
This commit is contained in:
ray90514 2021-04-09 23:02:39 +08:00 committed by Rémi Verschelde
parent eb100cbddb
commit f1231a7c7e
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 11 additions and 1 deletions

View file

@ -2983,8 +2983,17 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_path
base_type.has_type = false; base_type.has_type = false;
} }
} break; } break;
case GDScriptParser::DataType::SCRIPT:
case GDScriptParser::DataType::GDSCRIPT: { case GDScriptParser::DataType::GDSCRIPT: {
Ref<GDScript> scr = base_type.script_type;
if (scr.is_valid()) {
for (const Map<StringName, Ref<GDScript>>::Element *E = scr->get_subclasses().front(); E; E = E->next()) {
ScriptCodeCompletionOption option(E->key().operator String(), ScriptCodeCompletionOption::KIND_CLASS);
options.insert(option.display, option);
}
}
FALLTHROUGH;
}
case GDScriptParser::DataType::SCRIPT: {
Ref<Script> scr = base_type.script_type; Ref<Script> scr = base_type.script_type;
if (scr.is_valid()) { if (scr.is_valid()) {
Map<StringName, Variant> constants; Map<StringName, Variant> constants;

View file

@ -5746,6 +5746,7 @@ bool GDScriptParser::_parse_type(DataType &r_type, bool p_can_be_void) {
can_index = false; can_index = false;
tokenizer->advance(); tokenizer->advance();
} break; } break;
case GDScriptTokenizer::TK_CURSOR:
case GDScriptTokenizer::TK_IDENTIFIER: { case GDScriptTokenizer::TK_IDENTIFIER: {
if (can_index) { if (can_index) {
_set_error("Unexpected identifier."); _set_error("Unexpected identifier.");