|
@@ -517,22 +517,24 @@ void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<S
|
|
|
|
|
|
Array stack;
|
|
Array stack;
|
|
Node *current = nullptr;
|
|
Node *current = nullptr;
|
|
- stack.push_back(owner_scene_node);
|
|
|
|
|
|
|
|
- while (!stack.empty()) {
|
|
|
|
- current = stack.pop_back();
|
|
|
|
- Ref<GDScript> script = current->get_script();
|
|
|
|
- if (script.is_valid() && script->get_path() == path) {
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- for (int i = 0; i < current->get_child_count(); ++i) {
|
|
|
|
- stack.push_back(current->get_child(i));
|
|
|
|
|
|
+ if (owner_scene_node) {
|
|
|
|
+ stack.push_back(owner_scene_node);
|
|
|
|
+ while (!stack.empty()) {
|
|
|
|
+ current = stack.pop_back();
|
|
|
|
+ Ref<GDScript> script = current->get_script();
|
|
|
|
+ if (script.is_valid() && script->get_path() == path) {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ for (int i = 0; i < current->get_child_count(); ++i) {
|
|
|
|
+ stack.push_back(current->get_child(i));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- Ref<GDScript> script = current->get_script();
|
|
|
|
- if (!script.is_valid() || script->get_path() != path) {
|
|
|
|
- current = owner_scene_node;
|
|
|
|
|
|
+ Ref<GDScript> script = current->get_script();
|
|
|
|
+ if (!script.is_valid() || script->get_path() != path) {
|
|
|
|
+ current = owner_scene_node;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
String code = parser->get_text_for_completion(p_params.position);
|
|
String code = parser->get_text_for_completion(p_params.position);
|