Fix LSP completion crashing on sceneless scripts

(cherry picked from commit 6db17a523e)
This commit is contained in:
Francois Belair 2021-08-06 15:20:47 -04:00 committed by Rémi Verschelde
parent a384ffa2b0
commit 9d0e0fe783
No known key found for this signature in database
GPG Key ID: C3336907360768E1

View File

@ -445,8 +445,9 @@ 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);
if (owner_scene_node) {
stack.push_back(owner_scene_node);
while (!stack.empty()) { while (!stack.empty()) {
current = stack.pop_back(); current = stack.pop_back();
Ref<GDScript> script = current->get_script(); Ref<GDScript> script = current->get_script();
@ -462,6 +463,7 @@ void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<S
if (!script.is_valid() || script->get_path() != path) { if (!script.is_valid() || script->get_path() != path) {
current = owner_scene_node; current = owner_scene_node;
} }
}
String code = parser->get_text_for_completion(p_params.position); String code = parser->get_text_for_completion(p_params.position);
GDScriptLanguage::get_singleton()->complete_code(code, path, current, r_options, forced, call_hint); GDScriptLanguage::get_singleton()->complete_code(code, path, current, r_options, forced, call_hint);