diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-12-05 13:05:11 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-12-05 13:05:11 +0100 |
commit | dc367bec38ae27a6f2dc48495f3bbd92f478e3f8 (patch) | |
tree | 55dae3cab3e07613bdee8a8066484a7c36ba34b7 /modules/gdscript/gdscript_editor.cpp | |
parent | 375d89ced067dab809ae43232143609ca90eb9ff (diff) | |
parent | c8889a7fe7c3c26b782c3c127dae97f89340df8b (diff) | |
download | redot-engine-dc367bec38ae27a6f2dc48495f3bbd92f478e3f8.tar.gz |
Merge pull request #79386 from HolonProduction/completion-get-child-static
Improve autocompletion with `get_node`
Diffstat (limited to 'modules/gdscript/gdscript_editor.cpp')
-rw-r--r-- | modules/gdscript/gdscript_editor.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 7c342cc41a..f6a76b325d 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -2667,6 +2667,11 @@ static bool _get_subscript_type(GDScriptParser::CompletionContext &p_context, co if (p_context.base == nullptr) { return false; } + if (p_subscript->base->datatype.type_source == GDScriptParser::DataType::ANNOTATED_EXPLICIT) { + // Annotated type takes precedence. + return false; + } + const GDScriptParser::GetNodeNode *get_node = nullptr; switch (p_subscript->base->type) { @@ -2715,10 +2720,19 @@ static bool _get_subscript_type(GDScriptParser::CompletionContext &p_context, co if (r_base != nullptr) { *r_base = node; } - r_base_type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT; - r_base_type.kind = GDScriptParser::DataType::NATIVE; + + r_base_type.type_source = GDScriptParser::DataType::INFERRED; r_base_type.builtin_type = Variant::OBJECT; r_base_type.native_type = node->get_class_name(); + + Ref<Script> scr = node->get_script(); + if (scr.is_null()) { + r_base_type.kind = GDScriptParser::DataType::NATIVE; + } else { + r_base_type.kind = GDScriptParser::DataType::SCRIPT; + r_base_type.script_type = scr; + } + return true; } } |