summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_editor.cpp
diff options
context:
space:
mode:
authorHolonProduction <holonproduction@gmail.com>2024-01-08 22:46:03 +0100
committerHolonProduction <holonproduction@gmail.com>2024-03-01 11:24:06 +0100
commitfc7d7d3dae02213d0a8d4b3af24f67017ef18770 (patch)
treec0371d5f4e8607235706a43fc673d5a667b823e7 /modules/gdscript/gdscript_editor.cpp
parent7d2ca2d8ac49cde9767e00b70f9eaf1920eb266d (diff)
downloadredot-engine-fc7d7d3dae02213d0a8d4b3af24f67017ef18770.tar.gz
Add test for `get_node` autocompletion
Diffstat (limited to 'modules/gdscript/gdscript_editor.cpp')
-rw-r--r--modules/gdscript/gdscript_editor.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index babd2c1772..bc3d82062d 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -1125,19 +1125,31 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
base_type = GDScriptParser::DataType();
} break;
case GDScriptParser::DataType::SCRIPT: {
+ print_line("identifier script");
Ref<Script> scr = base_type.script_type;
if (scr.is_valid()) {
+<<<<<<< HEAD
if (p_types_only) {
// TODO: Need to implement Script::get_script_enum_list and retrieve the enum list from a script.
} else if (!p_only_functions) {
+=======
+ print_line("script valid");
+ if (!p_only_functions) {
+ print_line("not only functions");
+>>>>>>> ae78637b78 (Add test for `get_node` autocompletion)
if (!base_type.is_meta_type) {
+ print_line("no meta type");
List<PropertyInfo> members;
scr->get_script_property_list(&members);
+ print_line("scripts", members.size());
for (const PropertyInfo &E : members) {
+ print_line(E.name);
if (E.usage & (PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_INTERNAL)) {
+ print_line("filtered 1");
continue;
}
if (E.name.contains("/")) {
+ print_line("filtered 2");
continue;
}
int location = p_recursion_depth + _get_property_location(scr, E.name);
@@ -2173,6 +2185,7 @@ static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context,
if (_guess_expression_type(c, last_assigned_expression, assigned_type)) {
if (id_type.is_set() && assigned_type.type.is_set() && !GDScriptAnalyzer::check_type_compatibility(id_type, assigned_type.type)) {
// The assigned type is incompatible. The annotated type takes priority.
+ print_line("Just here for testing.");
r_type.assigned_expression = last_assigned_expression;
r_type.type = id_type;
} else {
@@ -3163,6 +3176,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
is_function = true;
[[fallthrough]];
case GDScriptParser::COMPLETION_ATTRIBUTE: {
+ print_line("completion attribute");
r_forced = true;
const GDScriptParser::SubscriptNode *attr = static_cast<const GDScriptParser::SubscriptNode *>(completion_context.node);
if (attr->base) {
@@ -3171,7 +3185,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
if (!found_type && !_guess_expression_type(completion_context, attr->base, base)) {
break;
}
-
+ print_line(base.type.script_path, base.type.kind);
_find_identifiers_in_base(base, is_function, false, options, 0);
}
} break;