From 0c21f7afa65ed8ba4baf4b521e02961cff36f9f1 Mon Sep 17 00:00:00 2001 From: Bartosz Jaroszewski Date: Fri, 23 Feb 2024 15:24:42 +0100 Subject: [PATCH] Fix method completion on explicit self (#1399) * Fix TextEdit#range for method completion * ensure message_loc is not nil --- lib/ruby_lsp/listeners/completion.rb | 2 +- test/requests/completion_test.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ruby_lsp/listeners/completion.rb b/lib/ruby_lsp/listeners/completion.rb index f98bee511..6acc81b46 100644 --- a/lib/ruby_lsp/listeners/completion.rb +++ b/lib/ruby_lsp/listeners/completion.rb @@ -139,7 +139,7 @@ def build_method_completion(entry, node) Interface::CompletionItem.new( label: name, filter_text: name, - text_edit: Interface::TextEdit.new(range: range_from_node(node), new_text: name), + text_edit: Interface::TextEdit.new(range: range_from_location(T.must(node.message_loc)), new_text: name), kind: Constant::CompletionItemKind::METHOD, label_details: Interface::CompletionItemLabelDetails.new( detail: "(#{entry.parameters.map(&:decorated_name).join(", ")})", diff --git a/test/requests/completion_test.rb b/test/requests/completion_test.rb index f7df5ef3c..d46af68c8 100644 --- a/test/requests/completion_test.rb +++ b/test/requests/completion_test.rb @@ -495,6 +495,7 @@ def process assert_equal(["bar", "baz"], result.map(&:filter_text)) assert_equal(["bar", "baz"], result.map { |completion| completion.text_edit.new_text }) assert_equal(["(a, b)", "(c, d)"], result.map { |completion| completion.label_details.detail }) + assert_equal([9, 9], result.map { |completion| completion.text_edit.range.start.character }) end def test_completion_for_methods_named_with_uppercase_characters