From f1d706b4906d7736a31530041fd90c4c94fd33a2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 06:47:34 +0000 Subject: [PATCH 1/6] Initial plan From 643b58db551f87e9228a60d360243acbfcba49db Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 07:04:55 +0000 Subject: [PATCH 2/6] Fix namespace scope resolution to use continuous class chain The issue was that when looking up Foo::Bar.class_method, the code was only searching for 'Bar' instead of 'Foo::Bar'. This fix finds the leftmost continuous chain of class/module names and builds the full path. Also added comprehensive tests for the scenario. Co-authored-by: kwerle <23320+kwerle@users.noreply.github.com> --- lib/ruby_language_server/project_manager.rb | 14 ++++- .../project_manager_spec.rb | 51 +++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/lib/ruby_language_server/project_manager.rb b/lib/ruby_language_server/project_manager.rb index 2ae74db..fefe81c 100644 --- a/lib/ruby_language_server/project_manager.rb +++ b/lib/ruby_language_server/project_manager.rb @@ -182,9 +182,19 @@ def possible_definitions(uri, position) end if class_module_indices.any? - # Use the rightmost class/module and build the path from there to just before the name + # Find the continuous chain of class/module names ending at the rightmost one + # For "Foo::Bar.method", we want both Foo and Bar, not just Bar + # For "foo.Bar::Baz.method", we want Bar and Baz, not just Baz rightmost_class_index = class_module_indices.last - scope_path_parts = context[rightmost_class_index..-2] + + # Find the leftmost index of the continuous chain ending at rightmost_class_index + leftmost_continuous_index = rightmost_class_index + class_module_indices.reverse.each_cons(2) do |right, left| + break unless right == left + 1 # Break if not continuous + leftmost_continuous_index = left + end + + scope_path_parts = context[leftmost_continuous_index..-2] if scope_path_parts.empty? # This shouldn't happen, but handle it gracefully diff --git a/spec/lib/ruby_language_server/project_manager_spec.rb b/spec/lib/ruby_language_server/project_manager_spec.rb index f7d791d..6007474 100644 --- a/spec/lib/ruby_language_server/project_manager_spec.rb +++ b/spec/lib/ruby_language_server/project_manager_spec.rb @@ -289,6 +289,57 @@ def import end end + describe 'namespaced class method lookup' do + let(:file_with_namespaced_class_method) do + <<~CODE_FILE + module Foo + class Bar + def self.class_method + puts "class method" + end + def some_method + puts "instance method" + end + end + end + + Foo::Bar # clicking on Bar should find the class + Foo::Bar.class_method # clicking on class_method should find the method + CODE_FILE + end + + before(:each) do + project_manager.update_document_content('namespace_method_uri', file_with_namespaced_class_method) + project_manager.tags_for_uri('namespace_method_uri') # Force load of tags + end + + it 'finds namespaced class when clicking on Bar in Foo::Bar' do + # Position on "Bar" in "Foo::Bar" on line 11 + # The line is: "Foo::Bar # clicking on Bar should find the class" + # Character 5 is on 'B' of Bar + position = OpenStruct.new(line: 11, character: 5) + results = project_manager.possible_definitions('namespace_method_uri', position) + + # Should find the Bar class definition on line 1 (0-indexed) + assert_equal 1, results.length + assert_equal 'namespace_method_uri', results.first[:uri] + assert_equal 1, results.first[:range][:start][:line] + end + + it 'finds class method when clicking on class_method in Foo::Bar.class_method' do + # Position on "class_method" in "Foo::Bar.class_method" on line 12 + # The line is: "Foo::Bar.class_method # clicking on class_method should find the method" + # Character 9 is on 'c' of class_method + position = OpenStruct.new(line: 12, character: 9) + results = project_manager.possible_definitions('namespace_method_uri', position) + + # Should find the class_method definition on line 2 (0-indexed) + assert_equal 1, results.length + assert_equal 'namespace_method_uri', results.first[:uri] + assert_equal 2, results.first[:range][:start][:line] + end + end + describe 'parameter vs method name resolution' do let(:file_with_param_shadowing) do <<~CODE_FILE From e40a8e8720dfd3ca7da181f1d2ec41b344ae197b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 07:21:26 +0000 Subject: [PATCH 3/6] Fix rubocop linting issues Co-authored-by: kwerle <23320+kwerle@users.noreply.github.com> --- Dockerfile | 7 ++++--- Gemfile.lock | 5 +++++ lib/ruby_language_server/project_manager.rb | 7 ++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index cd8ccb9..48d6492 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,17 +2,18 @@ # # For development: # docker run -it -v $PWD:/project -v $PWD:/tmp/src -w /tmp/src ruby_language_server sh -c 'bundle && guard' -FROM ruby:4.0-alpine +FROM ruby:4.0-slim LABEL maintainer="kurt@CircleW.org" # RUN gem update bundler - Skipping as Ruby 4.0 comes with compatible bundler # Needed for byebug and some other gems -RUN apk update +RUN apt-get update && apt-get install -y \ + curl make g++ sqlite3 libsqlite3-dev libyaml-dev linux-libc-dev build-essential ncurses-bin unzip pkg-config file \ + && rm -rf /var/lib/apt/lists/* # changes as of ruby 4: # ncurses for guard # linux-headers to build some io code - maybe to do with sockets -RUN apk add curl make g++ sqlite-dev yaml-dev linux-headers ncurses WORKDIR /usr/local/src RUN curl -O -L https://github.com/mateusza/SQLite-Levenshtein/archive/master.zip diff --git a/Gemfile.lock b/Gemfile.lock index b82fb6b..c21d60e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -54,6 +54,7 @@ GEM erb (6.0.1) etc (1.4.6) ffi (1.17.3-aarch64-linux-musl) + ffi (1.17.3-x86_64-linux-gnu) formatador (1.2.3) reline fuzzy_match (2.1.0) @@ -173,6 +174,7 @@ GEM simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) sqlite3 (2.9.0-aarch64-linux-musl) + sqlite3 (2.9.0-x86_64-linux-gnu) stringio (3.2.0) sync (0.5.0) thor (1.5.0) @@ -192,6 +194,7 @@ GEM PLATFORMS aarch64-linux-musl + x86_64-linux DEPENDENCIES debug @@ -232,6 +235,7 @@ CHECKSUMS erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5 etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2 + ffi (1.17.3-x86_64-linux-gnu) formatador (1.2.3) sha256=19fa898133c2c26cdbb5d09f6998c1e137ad9427a046663e55adfe18b950d894 fuzzy_match (2.1.0) sha256=e97e25d0eaee48a5f77ed970d007c7b6ff3c6a6858303fead2d1986859204dfc guard (2.19.1) sha256=b8bc52694be3d8b26730280de7dcec7fe92ea1cff3414246fe96af3f23580f3d @@ -285,6 +289,7 @@ CHECKSUMS simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246 simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428 sqlite3 (2.9.0-aarch64-linux-musl) sha256=56a35cb2d70779afc2ac191baf2c2148242285ecfed72f9b021218c5c4917913 + sqlite3 (2.9.0-x86_64-linux-gnu) stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 sync (0.5.0) sha256=668356cc07c59ac7ed9ecf34fec3929831f179c07adb1f3e1c3b7a1609a638fd thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73 diff --git a/lib/ruby_language_server/project_manager.rb b/lib/ruby_language_server/project_manager.rb index fefe81c..64924ab 100644 --- a/lib/ruby_language_server/project_manager.rb +++ b/lib/ruby_language_server/project_manager.rb @@ -186,14 +186,15 @@ def possible_definitions(uri, position) # For "Foo::Bar.method", we want both Foo and Bar, not just Bar # For "foo.Bar::Baz.method", we want Bar and Baz, not just Baz rightmost_class_index = class_module_indices.last - + # Find the leftmost index of the continuous chain ending at rightmost_class_index leftmost_continuous_index = rightmost_class_index class_module_indices.reverse.each_cons(2) do |right, left| - break unless right == left + 1 # Break if not continuous + break unless right == left + 1 # Break if not continuous + leftmost_continuous_index = left end - + scope_path_parts = context[leftmost_continuous_index..-2] if scope_path_parts.empty? From ca804d5e21e0c43fbdbcf3b3fa46bbe883687ac0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 07:24:08 +0000 Subject: [PATCH 4/6] Address code review feedback - Clarify line number comments in tests (explicitly state 0-indexed) - Add proper checksums to Gemfile.lock for x86_64-linux platform Co-authored-by: kwerle <23320+kwerle@users.noreply.github.com> --- Gemfile.lock | 4 ++-- spec/lib/ruby_language_server/project_manager_spec.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c21d60e..ec1ce12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -235,7 +235,7 @@ CHECKSUMS erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5 etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2 - ffi (1.17.3-x86_64-linux-gnu) + ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f formatador (1.2.3) sha256=19fa898133c2c26cdbb5d09f6998c1e137ad9427a046663e55adfe18b950d894 fuzzy_match (2.1.0) sha256=e97e25d0eaee48a5f77ed970d007c7b6ff3c6a6858303fead2d1986859204dfc guard (2.19.1) sha256=b8bc52694be3d8b26730280de7dcec7fe92ea1cff3414246fe96af3f23580f3d @@ -289,7 +289,7 @@ CHECKSUMS simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246 simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428 sqlite3 (2.9.0-aarch64-linux-musl) sha256=56a35cb2d70779afc2ac191baf2c2148242285ecfed72f9b021218c5c4917913 - sqlite3 (2.9.0-x86_64-linux-gnu) + sqlite3 (2.9.0-x86_64-linux-gnu) sha256=72fff9bd750070ba3af695511ba5f0e0a2d8a9206f84869640b3e99dfaf3d5a5 stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 sync (0.5.0) sha256=668356cc07c59ac7ed9ecf34fec3929831f179c07adb1f3e1c3b7a1609a638fd thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73 diff --git a/spec/lib/ruby_language_server/project_manager_spec.rb b/spec/lib/ruby_language_server/project_manager_spec.rb index 6007474..cbec7c2 100644 --- a/spec/lib/ruby_language_server/project_manager_spec.rb +++ b/spec/lib/ruby_language_server/project_manager_spec.rb @@ -314,7 +314,7 @@ def some_method end it 'finds namespaced class when clicking on Bar in Foo::Bar' do - # Position on "Bar" in "Foo::Bar" on line 11 + # Position on "Bar" in "Foo::Bar" (0-indexed line 11) # The line is: "Foo::Bar # clicking on Bar should find the class" # Character 5 is on 'B' of Bar position = OpenStruct.new(line: 11, character: 5) @@ -327,7 +327,7 @@ def some_method end it 'finds class method when clicking on class_method in Foo::Bar.class_method' do - # Position on "class_method" in "Foo::Bar.class_method" on line 12 + # Position on "class_method" in "Foo::Bar.class_method" (0-indexed line 12) # The line is: "Foo::Bar.class_method # clicking on class_method should find the method" # Character 9 is on 'c' of class_method position = OpenStruct.new(line: 12, character: 9) From c8384aad03b2d9e33708d9c5b261cf44ddfeebc9 Mon Sep 17 00:00:00 2001 From: Kurt Werle Date: Tue, 10 Feb 2026 21:52:21 -0800 Subject: [PATCH 5/6] Gemfile update --- Gemfile.lock | 89 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 65 insertions(+), 24 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ec1ce12..1020e7c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,40 +53,49 @@ GEM drb (2.2.3) erb (6.0.1) etc (1.4.6) + ffi (1.17.3-aarch64-linux-gnu) ffi (1.17.3-aarch64-linux-musl) + ffi (1.17.3-arm-linux-gnu) + ffi (1.17.3-arm-linux-musl) + ffi (1.17.3-arm64-darwin) + ffi (1.17.3-x86-linux-gnu) + ffi (1.17.3-x86-linux-musl) + ffi (1.17.3-x86_64-darwin) ffi (1.17.3-x86_64-linux-gnu) + ffi (1.17.3-x86_64-linux-musl) formatador (1.2.3) reline fuzzy_match (2.1.0) - guard (2.19.1) + guard (2.20.1) formatador (>= 0.2.4) listen (>= 2.7, < 4.0) logger (~> 1.6) lumberjack (>= 1.0.12, < 2.0) nenv (~> 0.1) notiffany (~> 0.0) - ostruct (~> 0.6) pry (>= 0.13.0) shellany (~> 0.0) thor (>= 0.18.1) guard-compat (1.2.1) - guard-minitest (2.4.6) + guard-minitest (3.0.0) guard-compat (~> 1.2) - minitest (>= 3.0) + minitest (>= 5.0.4, < 7.0) guard-rubocop (1.5.0) guard (~> 2.0) rubocop (< 2.0) i18n (1.14.8) concurrent-ruby (~> 1.0) io-console (0.8.2) - irb (1.16.0) + irb (1.17.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json (2.18.0) + json (2.18.1) language_server-protocol (3.17.0.5) lint_roller (1.1.0) - listen (3.9.0) + listen (3.10.0) + logger rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) logger (1.7.0) @@ -106,13 +115,13 @@ GEM shellany (~> 0.0) ostruct (0.6.3) parallel (1.27.0) - parser (3.3.10.0) + parser (3.3.10.1) ast (~> 2.4.1) racc pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.8.0) + prism (1.9.0) pry (0.16.0) coderay (~> 1.1) method_source (~> 1.0) @@ -127,7 +136,7 @@ GEM rb-inotify (0.11.1) ffi (~> 1.0) rb-readline (0.5.5) - rdoc (7.1.0) + rdoc (7.2.0) erb psych (>= 4.0.0) tsort @@ -136,7 +145,7 @@ GEM regexp_parser (2.11.3) reline (0.6.3) io-console (~> 0.5) - rubocop (1.82.1) + rubocop (1.84.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -144,7 +153,7 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.48.0, < 2.0) + rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) rubocop-ast (1.49.0) @@ -173,13 +182,21 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) + sqlite3 (2.9.0-aarch64-linux-gnu) sqlite3 (2.9.0-aarch64-linux-musl) + sqlite3 (2.9.0-arm-linux-gnu) + sqlite3 (2.9.0-arm-linux-musl) + sqlite3 (2.9.0-arm64-darwin) + sqlite3 (2.9.0-x86-linux-gnu) + sqlite3 (2.9.0-x86-linux-musl) + sqlite3 (2.9.0-x86_64-darwin) sqlite3 (2.9.0-x86_64-linux-gnu) + sqlite3 (2.9.0-x86_64-linux-musl) stringio (3.2.0) sync (0.5.0) thor (1.5.0) timeout (0.6.0) - tins (1.51.0) + tins (1.51.1) bigdecimal mize (~> 0.6) readline @@ -193,8 +210,16 @@ GEM uri (1.1.1) PLATFORMS + aarch64-linux-gnu aarch64-linux-musl - x86_64-linux + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES debug @@ -234,21 +259,29 @@ CHECKSUMS drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5 etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 + ffi (1.17.3-aarch64-linux-gnu) sha256=28ad573df26560f0aedd8a90c3371279a0b2bd0b4e834b16a2baa10bd7a97068 ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2 + ffi (1.17.3-arm-linux-gnu) sha256=5bd4cea83b68b5ec0037f99c57d5ce2dd5aa438f35decc5ef68a7d085c785668 + ffi (1.17.3-arm-linux-musl) sha256=0d7626bb96265f9af78afa33e267d71cfef9d9a8eb8f5525344f8da6c7d76053 + ffi (1.17.3-arm64-darwin) sha256=0c690555d4cee17a7f07c04d59df39b2fba74ec440b19da1f685c6579bb0717f + ffi (1.17.3-x86-linux-gnu) sha256=868a88fcaf5186c3a46b7c7c2b2c34550e1e61a405670ab23f5b6c9971529089 + ffi (1.17.3-x86-linux-musl) sha256=f0286aa6ef40605cf586e61406c446de34397b85dbb08cc99fdaddaef8343945 + ffi (1.17.3-x86_64-darwin) sha256=1f211811eb5cfaa25998322cdd92ab104bfbd26d1c4c08471599c511f2c00bb5 ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f + ffi (1.17.3-x86_64-linux-musl) sha256=086b221c3a68320b7564066f46fed23449a44f7a1935f1fe5a245bd89d9aea56 formatador (1.2.3) sha256=19fa898133c2c26cdbb5d09f6998c1e137ad9427a046663e55adfe18b950d894 fuzzy_match (2.1.0) sha256=e97e25d0eaee48a5f77ed970d007c7b6ff3c6a6858303fead2d1986859204dfc - guard (2.19.1) sha256=b8bc52694be3d8b26730280de7dcec7fe92ea1cff3414246fe96af3f23580f3d + guard (2.20.1) sha256=ab9cd7873854e6b76080c0589f781ff3e390e441bdda20165804df54f977015a guard-compat (1.2.1) sha256=3ad21ab0070107f92edfd82610b5cdc2fb8e368851e72362ada9703443d646fe - guard-minitest (2.4.6) sha256=d89e83d029447c13b191599085d24b6e2fe61e402d275e46491cd3e82f561572 + guard-minitest (3.0.0) sha256=0c418e62a4081a429e4e66ad094a3b66f113423542b43ad7b2df0c87f19d5728 guard-rubocop (1.5.0) sha256=3041d796dcb5ee31e352de74732250826f5f235b4ff48df9dbf424a6dc736251 i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc - irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806 - json (2.18.0) sha256=b10506aee4183f5cf49e0efc48073d7b75843ce3782c68dbeb763351c08fd505 + irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae + json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986 language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - listen (3.9.0) sha256=db9e4424e0e5834480385197c139cb6b0ae0ef28cc13310cfd1ca78377d59c67 + listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2 logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 lumberjack (1.4.2) sha256=40de5ae46321380c835031bcc1370f13bba304d29f2b5f5bb152061a5a191b95 method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5 @@ -259,10 +292,10 @@ CHECKSUMS notiffany (0.1.3) sha256=d37669605b7f8dcb04e004e6373e2a780b98c776f8eb503ac9578557d7808738 ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912 parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 - parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688 pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.8.0) sha256=84453a16ef5530ea62c5f03ec16b52a459575ad4e7b9c2b360fd8ce2c39c1254 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 pry (0.16.0) sha256=d76c69065698ed1f85e717bd33d7942c38a50868f6b0673c636192b3d1b6054e psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f @@ -271,11 +304,11 @@ CHECKSUMS rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e rb-readline (0.5.5) sha256=9e9bd7e198bdef0822c46902f6c592b882c1f9777894a4c3dcf5b320824a8793 - rdoc (7.1.0) sha256=494899df0706c178596ca6e1d50f1b7eb285a9b2aae715be5abd742734f17363 + rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192 readline (0.0.4) sha256=6138eef17be2b98298b672c3ea63bf9cb5158d401324f26e1e84f235879c1d6a regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 - rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273 + rubocop (1.84.1) sha256=14cc626f355141f5a2ef53c10a68d66b13bb30639b26370a76559096cc6bcc1a rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd rubocop-minitest (0.38.2) sha256=5a9dfb5a538973d0601aa51e59637d3998bb8df81233edf1ff421504c6280068 rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 @@ -288,13 +321,21 @@ CHECKSUMS simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5 simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246 simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428 + sqlite3 (2.9.0-aarch64-linux-gnu) sha256=cfe1e0216f46d7483839719bf827129151e6c680317b99d7b8fc1597a3e13473 sqlite3 (2.9.0-aarch64-linux-musl) sha256=56a35cb2d70779afc2ac191baf2c2148242285ecfed72f9b021218c5c4917913 + sqlite3 (2.9.0-arm-linux-gnu) sha256=a19a21504b0d7c8c825fbbf37b358ae316b6bd0d0134c619874060b2eef05435 + sqlite3 (2.9.0-arm-linux-musl) sha256=fca5b26197c70e3363115d3faaea34d7b2ad9c7f5fa8d8312e31b64e7556ee07 + sqlite3 (2.9.0-arm64-darwin) sha256=a917bd9b84285766ff3300b7d79cd583f5a067594c8c1263e6441618c04a6ed3 + sqlite3 (2.9.0-x86-linux-gnu) sha256=47317ba230f6c2c361981aa5fc1bf9de1b99727317171393ba90abab092c5b5f + sqlite3 (2.9.0-x86-linux-musl) sha256=b627f3a2ca59aaaa5e10b8666cdbd7122469b49afa4bd895133cecb7b5c1368d + sqlite3 (2.9.0-x86_64-darwin) sha256=59fe51baa3cb33c36d27ce78b4ed9360cd33ccca09498c2ae63850c97c0a6026 sqlite3 (2.9.0-x86_64-linux-gnu) sha256=72fff9bd750070ba3af695511ba5f0e0a2d8a9206f84869640b3e99dfaf3d5a5 + sqlite3 (2.9.0-x86_64-linux-musl) sha256=ef716ba7a66d7deb1ccc402ac3a6d7343da17fac862793b7f0be3d2917253c90 stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1 sync (0.5.0) sha256=668356cc07c59ac7ed9ecf34fec3929831f179c07adb1f3e1c3b7a1609a638fd thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73 timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af - tins (1.51.0) sha256=9f83c534bfca23973c5e641308828d71d5ffa79fc32c0ef90996efa699d0696f + tins (1.51.1) sha256=cc17bc37e62bd2dd2e8bc2a706b9cf419dfd4766407b84b341a67db947f8e44a tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 From a8f800a862f9407f64c7145fb3c77feedc7bdcea Mon Sep 17 00:00:00 2001 From: Kurt Werle Date: Tue, 10 Feb 2026 21:59:08 -0800 Subject: [PATCH 6/6] Update a test --- spec/lib/ruby_language_server/completion_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lib/ruby_language_server/completion_spec.rb b/spec/lib/ruby_language_server/completion_spec.rb index 8b01541..3c99201 100644 --- a/spec/lib/ruby_language_server/completion_spec.rb +++ b/spec/lib/ruby_language_server/completion_spec.rb @@ -56,8 +56,8 @@ def scope_completions_in_target_context(*) completions = RubyLanguageServer::Completion.completion(context, nar_naz_scope, all_scopes) # Methods with parameters now include insertText, insertTextFormat, label with params, and detail expected_items = [ - {label: "Bar", kind: 7}, - {label: "baz(bing, zing)", kind: 2, insertText: "baz(${1:bing}, ${2:zing})", insertTextFormat: 2, detail: "bing (required), zing (required)"} + {label: "baz(bing, zing)", kind: 2, insertText: "baz(${1:bing}, ${2:zing})", insertTextFormat: 2, detail: "bing (required), zing (required)"}, + {label: "Bar", kind: 7} ] assert_equal(expected_items, completions[:items][0..1]) end