diff options
73 files changed, 693 insertions, 6 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; diff --git a/modules/gdscript/tests/scripts/completion/class_a.notest.gd b/modules/gdscript/tests/scripts/completion/class_a.notest.gd new file mode 100644 index 0000000000..47c64dc674 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/class_a.notest.gd @@ -0,0 +1,8 @@ +extends Node + +signal signal_of_a + +var property_of_a + +func func_of_a(): + pass diff --git a/modules/gdscript/tests/scripts/completion/get_node/get_node.tscn b/modules/gdscript/tests/scripts/completion/get_node/get_node.tscn new file mode 100644 index 0000000000..8e5994afab --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/get_node.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=2 format=3 uid="uid://c8wekfd5ql7bc"] + +[ext_resource type="Script" path="res://completion/class_a.notest.gd" id="1_ldc4g"] + +[node name="GetNode" type="Node"] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] + +[node name="UniqueNames" type="Node" parent="."] + +[node name="UniqueAnimationPlayer" type="AnimationPlayer" parent="UniqueNames"] +unique_name_in_owner = true + +[node name="UniqueA" type="Node" parent="UniqueNames"] +script = ExtResource("1_ldc4g") +unique_name_in_owner = true + +[node name="A" type="Node" parent="."] +script = ExtResource("1_ldc4g") diff --git a/modules/gdscript/tests/scripts/completion/get_node/get_node_member_annotated.cfg b/modules/gdscript/tests/scripts/completion/get_node/get_node_member_annotated.cfg deleted file mode 100644 index 27e695d245..0000000000 --- a/modules/gdscript/tests/scripts/completion/get_node/get_node_member_annotated.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[output] -include=[ - {"display": "autoplay"}, -] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.gd b/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.gd new file mode 100644 index 0000000000..0de954432b --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal/dollar.gd @@ -0,0 +1,5 @@ +extends Node + + +func a(): + %AnimationPlayer.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal/percent.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal/percent.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal/percent.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal/percent.gd b/modules/gdscript/tests/scripts/completion/get_node/literal/percent.gd new file mode 100644 index 0000000000..8628a48f6a --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal/percent.gd @@ -0,0 +1,5 @@ +extends Node + + +func a(): + $UniqueAnimationPlayer.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.gd new file mode 100644 index 0000000000..6c1926c12c --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.gd @@ -0,0 +1,5 @@ +extends Node + + +func a(): + $A.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.gd new file mode 100644 index 0000000000..6e3fee1696 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.gd @@ -0,0 +1,4 @@ +extends Node + +func a(): + $AnimationPlayer.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.gd new file mode 100644 index 0000000000..c437299af8 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.gd @@ -0,0 +1,5 @@ +extends Node + + +func a(): + %UniqueA.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.gd new file mode 100644 index 0000000000..07068fc5a4 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.gd @@ -0,0 +1,4 @@ +extends Node + +func a(): + %UniqueAnimationPlayer.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local/local.cfg b/modules/gdscript/tests/scripts/completion/get_node/local/local.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local/local.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local/local.gd b/modules/gdscript/tests/scripts/completion/get_node/local/local.gd new file mode 100644 index 0000000000..596ad80ef2 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local/local.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.gd b/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.gd new file mode 100644 index 0000000000..6f87af3c85 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered/local_interfered.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test := $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.gd new file mode 100644 index 0000000000..a710c8bbd7 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/class_local_interfered_scene.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test := $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.gd new file mode 100644 index 0000000000..6f87af3c85 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_interfered_scene/native_local_interfered_scene.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test := $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.gd new file mode 100644 index 0000000000..2fc88f93dd --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test = $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.gd new file mode 100644 index 0000000000..596ad80ef2 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.cfg new file mode 100644 index 0000000000..a72b489be6 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.cfg @@ -0,0 +1,12 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.gd new file mode 100644 index 0000000000..b6d2074939 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/class_local_typehint.gd @@ -0,0 +1,7 @@ +extends Node + +const A := preload("res://completion/class_a.notest.gd") + +func a(): + var test: A = $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.cfg new file mode 100644 index 0000000000..adf06c8707 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.cfg @@ -0,0 +1,12 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.gd new file mode 100644 index 0000000000..13b541a35d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint/native_local_typehint.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test: AnimationPlayer = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.cfg new file mode 100644 index 0000000000..9c580b711d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.gd new file mode 100644 index 0000000000..b6d2074939 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/class_local_typehint_scene.gd @@ -0,0 +1,7 @@ +extends Node + +const A := preload("res://completion/class_a.notest.gd") + +func a(): + var test: A = $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.cfg new file mode 100644 index 0000000000..446198dd35 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.gd new file mode 100644 index 0000000000..13b541a35d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene/native_local_typehint_scene.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test: AnimationPlayer = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.cfg new file mode 100644 index 0000000000..9c580b711d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.notest.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.notest.gd new file mode 100644 index 0000000000..5c785b3ddc --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/class_local_typehint_scene_broad.notest.gd @@ -0,0 +1,6 @@ +# TODO +extends Node + +func a(): + var test: Node = $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.cfg new file mode 100644 index 0000000000..446198dd35 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.notest.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.notest.gd new file mode 100644 index 0000000000..57f4e16e3c --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_broad/native_local_typehint_scene_broad.notest.gd @@ -0,0 +1,6 @@ +# TODO +extends Node + +func a(): + var test: Node = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.cfg new file mode 100644 index 0000000000..1894e72c65 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.cfg @@ -0,0 +1,20 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; Area2D + {"display": "get_overlapping_areas"}, + {"display": "linear_damp"}, + {"display": "area_entered"}, +] +exclude=[ + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.gd new file mode 100644 index 0000000000..c6adfe0dd3 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/class_local_typehint_scene_incompatible.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test: Area2D = $A + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.cfg b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.cfg new file mode 100644 index 0000000000..c8ab63f6d6 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.cfg @@ -0,0 +1,20 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; Area2D + {"display": "get_overlapping_areas"}, + {"display": "linear_damp"}, + {"display": "area_entered"}, +] +exclude=[ + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.gd b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.gd new file mode 100644 index 0000000000..f53fce9bfe --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/local_typehint_scene_incompatible/native_local_typehint_scene_incompatible.gd @@ -0,0 +1,5 @@ +extends Node + +func a(): + var test: Area2D = $AnimationPlayer + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member/member.cfg b/modules/gdscript/tests/scripts/completion/get_node/member/member.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member/member.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member/member.gd b/modules/gdscript/tests/scripts/completion/get_node/member/member.gd new file mode 100644 index 0000000000..6bcc0a0298 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member/member.gd @@ -0,0 +1,6 @@ +extends Node + +var test = $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.cfg new file mode 100644 index 0000000000..ae7d34d87d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.cfg @@ -0,0 +1,7 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.gd b/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.gd new file mode 100644 index 0000000000..542197e643 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered/member_interfered.gd @@ -0,0 +1,6 @@ +extends Node + +var test := $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.gd new file mode 100644 index 0000000000..da0b1b11d4 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/class_member_interfered_scene.gd @@ -0,0 +1,6 @@ +extends Node + +var test := $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.gd new file mode 100644 index 0000000000..542197e643 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_interfered_scene/native_member_interfered_scene.gd @@ -0,0 +1,6 @@ +extends Node + +var test := $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.cfg new file mode 100644 index 0000000000..009ab9f9ce --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.gd new file mode 100644 index 0000000000..4a35661e94 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_scene/class_member_scene.gd @@ -0,0 +1,6 @@ +extends Node + +var test = $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.cfg new file mode 100644 index 0000000000..0fb46a4704 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.gd new file mode 100644 index 0000000000..6bcc0a0298 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_scene/native_member_scene.gd @@ -0,0 +1,6 @@ +extends Node + +var test = $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.cfg new file mode 100644 index 0000000000..a72b489be6 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.cfg @@ -0,0 +1,12 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.gd new file mode 100644 index 0000000000..e4edc3a4e4 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/class_member_typehint.gd @@ -0,0 +1,8 @@ +extends Node + +const A := preload("res://completion/class_a.notest.gd") + +var test: A = $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint/native_member_typehint.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/native_member_typehint.cfg new file mode 100644 index 0000000000..adf06c8707 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/native_member_typehint.cfg @@ -0,0 +1,12 @@ +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/get_node_member_annotated.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/native_member_typehint.gd index d41bbb970c..eda94ae34d 100644 --- a/modules/gdscript/tests/scripts/completion/get_node/get_node_member_annotated.gd +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint/native_member_typehint.gd @@ -2,5 +2,5 @@ extends Node var test: AnimationPlayer = $AnimationPlayer -func _ready(): +func a(): test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.cfg new file mode 100644 index 0000000000..9c580b711d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.gd new file mode 100644 index 0000000000..e4edc3a4e4 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/class_member_typehint_scene.gd @@ -0,0 +1,8 @@ +extends Node + +const A := preload("res://completion/class_a.notest.gd") + +var test: A = $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.cfg new file mode 100644 index 0000000000..446198dd35 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.cfg @@ -0,0 +1,14 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.gd new file mode 100644 index 0000000000..eda94ae34d --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene/native_member_typehint_scene.gd @@ -0,0 +1,6 @@ +extends Node + +var test: AnimationPlayer = $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.cfg new file mode 100644 index 0000000000..502038bef7 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.cfg @@ -0,0 +1,16 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + +] +exclude=[ + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.gd new file mode 100644 index 0000000000..7b0ed4ecd8 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/class_member_typehint_scene_broad.gd @@ -0,0 +1,6 @@ +extends Node + +var test: Node = $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.cfg new file mode 100644 index 0000000000..1810e9fe5f --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.cfg @@ -0,0 +1,16 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + +] +exclude=[ + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.gd new file mode 100644 index 0000000000..87342f9a21 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_broad/native_member_typehint_scene_broad.gd @@ -0,0 +1,6 @@ +extends Node + +var test: Node = $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.cfg new file mode 100644 index 0000000000..1894e72c65 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.cfg @@ -0,0 +1,20 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; Area2D + {"display": "get_overlapping_areas"}, + {"display": "linear_damp"}, + {"display": "area_entered"}, +] +exclude=[ + ; GDScript: class_a.notest.gd + {"display": "property_of_a"}, + {"display": "func_of_a"}, + {"display": "signal_of_a"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.gd new file mode 100644 index 0000000000..5f78bcdf04 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/class_member_typehint_scene_incompatible.gd @@ -0,0 +1,6 @@ +extends Node + +var test: Area2D = $A + +func a(): + test.➡ diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.cfg b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.cfg new file mode 100644 index 0000000000..c8ab63f6d6 --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.cfg @@ -0,0 +1,20 @@ +[input] +scene="res://completion/get_node/get_node.tscn" +[output] +include=[ + ; Node + {"display": "add_child"}, + {"display": "owner"}, + {"display": "child_entered_tree"}, + + ; Area2D + {"display": "get_overlapping_areas"}, + {"display": "linear_damp"}, + {"display": "area_entered"}, +] +exclude=[ + ; AnimationPlayer + {"display": "autoplay"}, + {"display": "play"}, + {"display": "animation_changed"}, +] diff --git a/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.gd b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.gd new file mode 100644 index 0000000000..c14df5cd1b --- /dev/null +++ b/modules/gdscript/tests/scripts/completion/get_node/member_typehint_scene_incompatible/native_member_typehint_scene_incompatible.gd @@ -0,0 +1,6 @@ +extends Node + +var test: Area2D = $AnimationPlayer + +func a(): + test.➡ diff --git a/modules/gdscript/tests/test_completion.h b/modules/gdscript/tests/test_completion.h index fd6b5321e6..b127471012 100644 --- a/modules/gdscript/tests/test_completion.h +++ b/modules/gdscript/tests/test_completion.h @@ -113,6 +113,8 @@ static void test_directory(const String &p_dir) { // Require pointer sentinel char in scripts. CHECK(code.find_char(0xFFFF) != -1); + print_line("Testing completion for: ", next); + ConfigFile conf; if (conf.load(path.path_join(next.get_basename() + ".cfg")) != OK) { FAIL("No config file found."); @@ -153,6 +155,7 @@ static void test_directory(const String &p_dir) { GDScriptLanguage::get_singleton()->complete_code(code, path.path_join(next), owner, &options, forced, call_hint); String contains_excluded; for (ScriptLanguage::CodeCompletionOption &option : options) { + print_line(option.display); for (const Dictionary &E : exclude) { if (match_option(E, option)) { contains_excluded = option.display; @@ -166,11 +169,18 @@ static void test_directory(const String &p_dir) { for (const Dictionary &E : include) { if (match_option(E, option)) { include.erase(E); + print_line("erased"); break; } } } CHECK_MESSAGE(contains_excluded.is_empty(), "Autocompletion suggests illegal option '", contains_excluded, "' for '", path.path_join(next), "'."); + + if (!include.is_empty()) { + for (const Dictionary &E : include) { + print_line(E); + } + } CHECK(include.is_empty()); String expected_call_hint = conf.get_value("output", "call_hint", call_hint); |