ruby-lsp 0.23.13 → 0.23.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/VERSION +1 -1
 - data/exe/ruby-lsp-launcher +9 -1
 - data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +1 -1
 - data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +6 -3
 - data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +4 -2
 - data/lib/ruby_indexer/lib/ruby_indexer/index.rb +59 -29
 - data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +5 -4
 - data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +5 -1
 - data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +8 -3
 - data/lib/ruby_indexer/test/class_variables_test.rb +14 -14
 - data/lib/ruby_indexer/test/classes_and_modules_test.rb +65 -40
 - data/lib/ruby_indexer/test/configuration_test.rb +6 -4
 - data/lib/ruby_indexer/test/constant_test.rb +34 -34
 - data/lib/ruby_indexer/test/enhancements_test.rb +1 -1
 - data/lib/ruby_indexer/test/index_test.rb +139 -135
 - data/lib/ruby_indexer/test/instance_variables_test.rb +37 -37
 - data/lib/ruby_indexer/test/method_test.rb +118 -118
 - data/lib/ruby_indexer/test/prefix_tree_test.rb +13 -13
 - data/lib/ruby_indexer/test/rbs_indexer_test.rb +64 -70
 - data/lib/ruby_indexer/test/test_case.rb +2 -2
 - data/lib/ruby_indexer/test/uri_test.rb +15 -2
 - data/lib/ruby_lsp/erb_document.rb +12 -4
 - data/lib/ruby_lsp/global_state.rb +1 -1
 - data/lib/ruby_lsp/listeners/code_lens.rb +3 -3
 - data/lib/ruby_lsp/listeners/completion.rb +24 -11
 - data/lib/ruby_lsp/listeners/definition.rb +1 -1
 - data/lib/ruby_lsp/listeners/document_link.rb +3 -1
 - data/lib/ruby_lsp/listeners/document_symbol.rb +3 -3
 - data/lib/ruby_lsp/listeners/folding_ranges.rb +8 -4
 - data/lib/ruby_lsp/listeners/hover.rb +2 -2
 - data/lib/ruby_lsp/listeners/semantic_highlighting.rb +12 -5
 - data/lib/ruby_lsp/listeners/signature_help.rb +5 -1
 - data/lib/ruby_lsp/listeners/spec_style.rb +1 -1
 - data/lib/ruby_lsp/listeners/test_style.rb +3 -3
 - data/lib/ruby_lsp/requests/code_action_resolve.rb +4 -3
 - data/lib/ruby_lsp/requests/completion_resolve.rb +1 -1
 - data/lib/ruby_lsp/requests/hover.rb +2 -2
 - data/lib/ruby_lsp/requests/on_type_formatting.rb +4 -2
 - data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +1 -2
 - data/lib/ruby_lsp/requests/references.rb +2 -1
 - data/lib/ruby_lsp/requests/rename.rb +8 -5
 - data/lib/ruby_lsp/requests/semantic_highlighting.rb +4 -4
 - data/lib/ruby_lsp/requests/show_syntax_tree.rb +1 -1
 - data/lib/ruby_lsp/requests/support/common.rb +3 -1
 - data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +2 -2
 - data/lib/ruby_lsp/requests/support/source_uri.rb +1 -1
 - data/lib/ruby_lsp/response_builders/document_symbol.rb +3 -2
 - data/lib/ruby_lsp/response_builders/hover.rb +1 -1
 - data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +1 -1
 - data/lib/ruby_lsp/scripts/compose_bundle.rb +6 -4
 - data/lib/ruby_lsp/server.rb +12 -4
 - data/lib/ruby_lsp/setup_bundler.rb +5 -2
 - data/lib/ruby_lsp/static_docs.rb +8 -1
 - data/lib/ruby_lsp/store.rb +3 -2
 - data/lib/ruby_lsp/test_helper.rb +0 -1
 - data/lib/ruby_lsp/test_reporters/lsp_reporter.rb +152 -0
 - data/lib/ruby_lsp/test_reporters/minitest_reporter.rb +105 -0
 - data/lib/ruby_lsp/test_reporters/test_unit_reporter.rb +94 -0
 - data/lib/ruby_lsp/type_inferrer.rb +4 -1
 - metadata +6 -6
 - data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +0 -109
 - data/lib/ruby_lsp/test_reporter.rb +0 -207
 - data/lib/ruby_lsp/test_unit_test_runner.rb +0 -98
 
| 
         @@ -47,9 +47,9 @@ module RubyIndexer 
     | 
|
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                  entry =  
     | 
| 
       51 
     | 
    
         
            -
                  owner =  
     | 
| 
       52 
     | 
    
         
            -
                  assert_equal("Foo::<Class:Foo>", owner 
     | 
| 
      
 50 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 51 
     | 
    
         
            +
                  owner = entry.owner
         
     | 
| 
      
 52 
     | 
    
         
            +
                  assert_equal("Foo::<Class:Foo>", owner&.name)
         
     | 
| 
       53 
53 
     | 
    
         
             
                  assert_instance_of(Entry::SingletonClass, owner)
         
     | 
| 
       54 
54 
     | 
    
         
             
                end
         
     | 
| 
       55 
55 
     | 
    
         | 
| 
         @@ -79,11 +79,11 @@ module RubyIndexer 
     | 
|
| 
       79 
79 
     | 
    
         
             
                    end
         
     | 
| 
       80 
80 
     | 
    
         
             
                  RUBY
         
     | 
| 
       81 
81 
     | 
    
         | 
| 
       82 
     | 
    
         
            -
                  assert_equal(2, @index["bar"] 
     | 
| 
       83 
     | 
    
         
            -
                  first_entry =  
     | 
| 
       84 
     | 
    
         
            -
                  assert_equal("Foo::self::Bar", first_entry.owner 
     | 
| 
       85 
     | 
    
         
            -
                  second_entry =  
     | 
| 
       86 
     | 
    
         
            -
                  assert_equal("Bar", second_entry.owner 
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_equal(2, @index["bar"]&.length)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  first_entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 84 
     | 
    
         
            +
                  assert_equal("Foo::self::Bar", first_entry.owner&.name)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  second_entry = @index["bar"]&.last #: as Entry::Method
         
     | 
| 
      
 86 
     | 
    
         
            +
                  assert_equal("Bar", second_entry.owner&.name)
         
     | 
| 
       87 
87 
     | 
    
         
             
                end
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                def test_visibility_tracking
         
     | 
| 
         @@ -135,19 +135,19 @@ module RubyIndexer 
     | 
|
| 
       135 
135 
     | 
    
         
             
                  RUBY
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
137 
     | 
    
         
             
                  ["foo", "bar"].each do |keyword|
         
     | 
| 
       138 
     | 
    
         
            -
                    entries =  
     | 
| 
      
 138 
     | 
    
         
            +
                    entries = @index[keyword] #: as Array[Entry::Method]
         
     | 
| 
       139 
139 
     | 
    
         
             
                    # should receive two entries because module_function creates a singleton method
         
     | 
| 
       140 
140 
     | 
    
         
             
                    # for the Test module and a private method for classes include the Test module
         
     | 
| 
       141 
141 
     | 
    
         
             
                    assert_equal(entries.size, 2)
         
     | 
| 
       142 
142 
     | 
    
         
             
                    first_entry, second_entry = *entries
         
     | 
| 
       143 
143 
     | 
    
         
             
                    # The first entry points to the location of the module_function call
         
     | 
| 
       144 
     | 
    
         
            -
                    assert_equal("Test", first_entry 
     | 
| 
       145 
     | 
    
         
            -
                    assert_instance_of(Entry::Module, first_entry 
     | 
| 
      
 144 
     | 
    
         
            +
                    assert_equal("Test", first_entry&.owner&.name)
         
     | 
| 
      
 145 
     | 
    
         
            +
                    assert_instance_of(Entry::Module, first_entry&.owner)
         
     | 
| 
       146 
146 
     | 
    
         
             
                    assert_predicate(first_entry, :private?)
         
     | 
| 
       147 
147 
     | 
    
         
             
                    # The second entry points to the public singleton method
         
     | 
| 
       148 
     | 
    
         
            -
                    assert_equal("Test::<Class:Test>", second_entry 
     | 
| 
       149 
     | 
    
         
            -
                    assert_instance_of(Entry::SingletonClass, second_entry 
     | 
| 
       150 
     | 
    
         
            -
                    assert_equal(Entry::Visibility::PUBLIC, second_entry 
     | 
| 
      
 148 
     | 
    
         
            +
                    assert_equal("Test::<Class:Test>", second_entry&.owner&.name)
         
     | 
| 
      
 149 
     | 
    
         
            +
                    assert_instance_of(Entry::SingletonClass, second_entry&.owner)
         
     | 
| 
      
 150 
     | 
    
         
            +
                    assert_equal(Entry::Visibility::PUBLIC, second_entry&.visibility)
         
     | 
| 
       151 
151 
     | 
    
         
             
                  end
         
     | 
| 
       152 
152 
     | 
    
         
             
                end
         
     | 
| 
       153 
153 
     | 
    
         | 
| 
         @@ -168,13 +168,13 @@ module RubyIndexer 
     | 
|
| 
       168 
168 
     | 
    
         
             
                  RUBY
         
     | 
| 
       169 
169 
     | 
    
         | 
| 
       170 
170 
     | 
    
         
             
                  ["foo", "bar"].each do |keyword|
         
     | 
| 
       171 
     | 
    
         
            -
                    entries =  
     | 
| 
      
 171 
     | 
    
         
            +
                    entries = @index[keyword] #: as Array[Entry::Method]
         
     | 
| 
       172 
172 
     | 
    
         
             
                    assert_equal(1, entries.size)
         
     | 
| 
       173 
173 
     | 
    
         
             
                    entry = entries.first
         
     | 
| 
       174 
174 
     | 
    
         
             
                    assert_predicate(entry, :private?)
         
     | 
| 
       175 
175 
     | 
    
         
             
                  end
         
     | 
| 
       176 
176 
     | 
    
         | 
| 
       177 
     | 
    
         
            -
                  entries =  
     | 
| 
      
 177 
     | 
    
         
            +
                  entries = @index["baz"] #: as Array[Entry::Method]
         
     | 
| 
       178 
178 
     | 
    
         
             
                  assert_equal(1, entries.size)
         
     | 
| 
       179 
179 
     | 
    
         
             
                  entry = entries.first
         
     | 
| 
       180 
180 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
         @@ -197,13 +197,13 @@ module RubyIndexer 
     | 
|
| 
       197 
197 
     | 
    
         
             
                  RUBY
         
     | 
| 
       198 
198 
     | 
    
         | 
| 
       199 
199 
     | 
    
         
             
                  ["foo", "bar"].each do |keyword|
         
     | 
| 
       200 
     | 
    
         
            -
                    entries =  
     | 
| 
      
 200 
     | 
    
         
            +
                    entries = @index[keyword] #: as Array[Entry::Method]
         
     | 
| 
       201 
201 
     | 
    
         
             
                    assert_equal(1, entries.size)
         
     | 
| 
       202 
202 
     | 
    
         
             
                    entry = entries.first
         
     | 
| 
       203 
203 
     | 
    
         
             
                    assert_predicate(entry, :private?)
         
     | 
| 
       204 
204 
     | 
    
         
             
                  end
         
     | 
| 
       205 
205 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                  entries =  
     | 
| 
      
 206 
     | 
    
         
            +
                  entries = @index["baz"] #: as Array[Entry::Method]
         
     | 
| 
       207 
207 
     | 
    
         
             
                  assert_equal(1, entries.size)
         
     | 
| 
       208 
208 
     | 
    
         
             
                  entry = entries.first
         
     | 
| 
       209 
209 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
         @@ -220,12 +220,12 @@ module RubyIndexer 
     | 
|
| 
       220 
220 
     | 
    
         
             
                    end
         
     | 
| 
       221 
221 
     | 
    
         
             
                  RUBY
         
     | 
| 
       222 
222 
     | 
    
         | 
| 
       223 
     | 
    
         
            -
                  entries =  
     | 
| 
      
 223 
     | 
    
         
            +
                  entries = @index["foo"] #: as Array[Entry::Method]
         
     | 
| 
       224 
224 
     | 
    
         
             
                  assert_equal(1, entries.size)
         
     | 
| 
       225 
225 
     | 
    
         
             
                  entry = entries.first
         
     | 
| 
       226 
226 
     | 
    
         
             
                  assert_predicate(entry, :private?)
         
     | 
| 
       227 
227 
     | 
    
         | 
| 
       228 
     | 
    
         
            -
                  entries =  
     | 
| 
      
 228 
     | 
    
         
            +
                  entries = @index["bar"] #: as Array[Entry::Method]
         
     | 
| 
       229 
229 
     | 
    
         
             
                  assert_equal(1, entries.size)
         
     | 
| 
       230 
230 
     | 
    
         
             
                  entry = entries.first
         
     | 
| 
       231 
231 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
         @@ -251,17 +251,17 @@ module RubyIndexer 
     | 
|
| 
       251 
251 
     | 
    
         
             
                    end
         
     | 
| 
       252 
252 
     | 
    
         
             
                  RUBY
         
     | 
| 
       253 
253 
     | 
    
         | 
| 
       254 
     | 
    
         
            -
                   
     | 
| 
       255 
     | 
    
         
            -
                  assert_equal("Documentation for Foo",  
     | 
| 
      
 254 
     | 
    
         
            +
                  foo = @index["Foo"]&.first #: as !nil
         
     | 
| 
      
 255 
     | 
    
         
            +
                  assert_equal("Documentation for Foo", foo.comments)
         
     | 
| 
       256 
256 
     | 
    
         | 
| 
       257 
     | 
    
         
            -
                   
     | 
| 
       258 
     | 
    
         
            -
                  assert_equal("####################\nDocumentation for bar\n####################\n",  
     | 
| 
      
 257 
     | 
    
         
            +
                  bar = @index["bar"]&.first #: as !nil
         
     | 
| 
      
 258 
     | 
    
         
            +
                  assert_equal("####################\nDocumentation for bar\n####################\n", bar.comments)
         
     | 
| 
       259 
259 
     | 
    
         | 
| 
       260 
     | 
    
         
            -
                   
     | 
| 
       261 
     | 
    
         
            -
                  assert_equal("Documentation for baz",  
     | 
| 
      
 260 
     | 
    
         
            +
                  baz = @index["baz"]&.first #: as !nil
         
     | 
| 
      
 261 
     | 
    
         
            +
                  assert_equal("Documentation for baz", baz.comments)
         
     | 
| 
       262 
262 
     | 
    
         | 
| 
       263 
     | 
    
         
            -
                   
     | 
| 
       264 
     | 
    
         
            -
                  assert_empty( 
     | 
| 
      
 263 
     | 
    
         
            +
                  ban = @index["ban"]&.first #: as !nil
         
     | 
| 
      
 264 
     | 
    
         
            +
                  assert_empty(ban.comments)
         
     | 
| 
       265 
265 
     | 
    
         
             
                end
         
     | 
| 
       266 
266 
     | 
    
         | 
| 
       267 
267 
     | 
    
         
             
                def test_method_with_parameters
         
     | 
| 
         @@ -273,11 +273,11 @@ module RubyIndexer 
     | 
|
| 
       273 
273 
     | 
    
         
             
                  RUBY
         
     | 
| 
       274 
274 
     | 
    
         | 
| 
       275 
275 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       276 
     | 
    
         
            -
                  entry =  
     | 
| 
       277 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 276 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 277 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       278 
278 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       279 
279 
     | 
    
         
             
                  parameter = parameters.first
         
     | 
| 
       280 
     | 
    
         
            -
                  assert_equal(:a, parameter 
     | 
| 
      
 280 
     | 
    
         
            +
                  assert_equal(:a, parameter&.name)
         
     | 
| 
       281 
281 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, parameter)
         
     | 
| 
       282 
282 
     | 
    
         
             
                end
         
     | 
| 
       283 
283 
     | 
    
         | 
| 
         @@ -290,11 +290,11 @@ module RubyIndexer 
     | 
|
| 
       290 
290 
     | 
    
         
             
                  RUBY
         
     | 
| 
       291 
291 
     | 
    
         | 
| 
       292 
292 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       293 
     | 
    
         
            -
                  entry =  
     | 
| 
       294 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 293 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 294 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       295 
295 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       296 
296 
     | 
    
         
             
                  parameter = parameters.first
         
     | 
| 
       297 
     | 
    
         
            -
                  assert_equal(:"(a, (b, ))", parameter 
     | 
| 
      
 297 
     | 
    
         
            +
                  assert_equal(:"(a, (b, ))", parameter&.name)
         
     | 
| 
       298 
298 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, parameter)
         
     | 
| 
       299 
299 
     | 
    
         
             
                end
         
     | 
| 
       300 
300 
     | 
    
         | 
| 
         @@ -307,11 +307,11 @@ module RubyIndexer 
     | 
|
| 
       307 
307 
     | 
    
         
             
                  RUBY
         
     | 
| 
       308 
308 
     | 
    
         | 
| 
       309 
309 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       310 
     | 
    
         
            -
                  entry =  
     | 
| 
       311 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 310 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 311 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       312 
312 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       313 
313 
     | 
    
         
             
                  parameter = parameters.first
         
     | 
| 
       314 
     | 
    
         
            -
                  assert_equal(:a, parameter 
     | 
| 
      
 314 
     | 
    
         
            +
                  assert_equal(:a, parameter&.name)
         
     | 
| 
       315 
315 
     | 
    
         
             
                  assert_instance_of(Entry::OptionalParameter, parameter)
         
     | 
| 
       316 
316 
     | 
    
         
             
                end
         
     | 
| 
       317 
317 
     | 
    
         | 
| 
         @@ -324,15 +324,15 @@ module RubyIndexer 
     | 
|
| 
       324 
324 
     | 
    
         
             
                  RUBY
         
     | 
| 
       325 
325 
     | 
    
         | 
| 
       326 
326 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       327 
     | 
    
         
            -
                  entry =  
     | 
| 
       328 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 327 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 328 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       329 
329 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       330 
330 
     | 
    
         
             
                  a, b = parameters
         
     | 
| 
       331 
331 
     | 
    
         | 
| 
       332 
     | 
    
         
            -
                  assert_equal(:a, a 
     | 
| 
      
 332 
     | 
    
         
            +
                  assert_equal(:a, a&.name)
         
     | 
| 
       333 
333 
     | 
    
         
             
                  assert_instance_of(Entry::KeywordParameter, a)
         
     | 
| 
       334 
334 
     | 
    
         | 
| 
       335 
     | 
    
         
            -
                  assert_equal(:b, b 
     | 
| 
      
 335 
     | 
    
         
            +
                  assert_equal(:b, b&.name)
         
     | 
| 
       336 
336 
     | 
    
         
             
                  assert_instance_of(Entry::OptionalKeywordParameter, b)
         
     | 
| 
       337 
337 
     | 
    
         
             
                end
         
     | 
| 
       338 
338 
     | 
    
         | 
| 
         @@ -345,15 +345,15 @@ module RubyIndexer 
     | 
|
| 
       345 
345 
     | 
    
         
             
                  RUBY
         
     | 
| 
       346 
346 
     | 
    
         | 
| 
       347 
347 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       348 
     | 
    
         
            -
                  entry =  
     | 
| 
       349 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 348 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 349 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       350 
350 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       351 
351 
     | 
    
         
             
                  a, b = parameters
         
     | 
| 
       352 
352 
     | 
    
         | 
| 
       353 
     | 
    
         
            -
                  assert_equal(:a, a 
     | 
| 
      
 353 
     | 
    
         
            +
                  assert_equal(:a, a&.name)
         
     | 
| 
       354 
354 
     | 
    
         
             
                  assert_instance_of(Entry::RestParameter, a)
         
     | 
| 
       355 
355 
     | 
    
         | 
| 
       356 
     | 
    
         
            -
                  assert_equal(:b, b 
     | 
| 
      
 356 
     | 
    
         
            +
                  assert_equal(:b, b&.name)
         
     | 
| 
       357 
357 
     | 
    
         
             
                  assert_instance_of(Entry::KeywordRestParameter, b)
         
     | 
| 
       358 
358 
     | 
    
         
             
                end
         
     | 
| 
       359 
359 
     | 
    
         | 
| 
         @@ -371,34 +371,34 @@ module RubyIndexer 
     | 
|
| 
       371 
371 
     | 
    
         
             
                  RUBY
         
     | 
| 
       372 
372 
     | 
    
         | 
| 
       373 
373 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       374 
     | 
    
         
            -
                  entry =  
     | 
| 
       375 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 374 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 375 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       376 
376 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       377 
377 
     | 
    
         
             
                  a, b = parameters
         
     | 
| 
       378 
378 
     | 
    
         | 
| 
       379 
     | 
    
         
            -
                  assert_equal(:a, a 
     | 
| 
      
 379 
     | 
    
         
            +
                  assert_equal(:a, a&.name)
         
     | 
| 
       380 
380 
     | 
    
         
             
                  assert_instance_of(Entry::RestParameter, a)
         
     | 
| 
       381 
381 
     | 
    
         | 
| 
       382 
     | 
    
         
            -
                  assert_equal(:b, b 
     | 
| 
      
 382 
     | 
    
         
            +
                  assert_equal(:b, b&.name)
         
     | 
| 
       383 
383 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, b)
         
     | 
| 
       384 
384 
     | 
    
         | 
| 
       385 
     | 
    
         
            -
                  entry =  
     | 
| 
       386 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 385 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
      
 386 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       387 
387 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       388 
388 
     | 
    
         
             
                  a, b = parameters
         
     | 
| 
       389 
389 
     | 
    
         | 
| 
       390 
     | 
    
         
            -
                  assert_equal(:a, a 
     | 
| 
      
 390 
     | 
    
         
            +
                  assert_equal(:a, a&.name)
         
     | 
| 
       391 
391 
     | 
    
         
             
                  assert_instance_of(Entry::KeywordRestParameter, a)
         
     | 
| 
       392 
392 
     | 
    
         | 
| 
       393 
     | 
    
         
            -
                  assert_equal(:b, b 
     | 
| 
      
 393 
     | 
    
         
            +
                  assert_equal(:b, b&.name)
         
     | 
| 
       394 
394 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, b)
         
     | 
| 
       395 
395 
     | 
    
         | 
| 
       396 
     | 
    
         
            -
                  entry =  
     | 
| 
       397 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 396 
     | 
    
         
            +
                  entry = @index["qux"]&.first #: as Entry::Method
         
     | 
| 
      
 397 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       398 
398 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       399 
399 
     | 
    
         
             
                  _a, second = parameters
         
     | 
| 
       400 
400 
     | 
    
         | 
| 
       401 
     | 
    
         
            -
                  assert_equal(:"(b, c)", second 
     | 
| 
      
 401 
     | 
    
         
            +
                  assert_equal(:"(b, c)", second&.name)
         
     | 
| 
       402 
402 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, second)
         
     | 
| 
       403 
403 
     | 
    
         
             
                end
         
     | 
| 
       404 
404 
     | 
    
         | 
| 
         @@ -411,10 +411,10 @@ module RubyIndexer 
     | 
|
| 
       411 
411 
     | 
    
         
             
                  RUBY
         
     | 
| 
       412 
412 
     | 
    
         | 
| 
       413 
413 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       414 
     | 
    
         
            -
                  entry =  
     | 
| 
       415 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 414 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 415 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       416 
416 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       417 
     | 
    
         
            -
                  param = parameters.first
         
     | 
| 
      
 417 
     | 
    
         
            +
                  param = parameters.first #: as Entry::Parameter
         
     | 
| 
       418 
418 
     | 
    
         | 
| 
       419 
419 
     | 
    
         
             
                  assert_equal(:"(a, *b)", param.name)
         
     | 
| 
       420 
420 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, param)
         
     | 
| 
         @@ -431,17 +431,17 @@ module RubyIndexer 
     | 
|
| 
       431 
431 
     | 
    
         
             
                    end
         
     | 
| 
       432 
432 
     | 
    
         
             
                  RUBY
         
     | 
| 
       433 
433 
     | 
    
         | 
| 
       434 
     | 
    
         
            -
                  entry =  
     | 
| 
       435 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
       436 
     | 
    
         
            -
                  param = parameters.first
         
     | 
| 
      
 434 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 435 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
      
 436 
     | 
    
         
            +
                  param = parameters.first #: as Entry::Parameter
         
     | 
| 
       437 
437 
     | 
    
         
             
                  assert_equal(:block, param.name)
         
     | 
| 
       438 
438 
     | 
    
         
             
                  assert_instance_of(Entry::BlockParameter, param)
         
     | 
| 
       439 
439 
     | 
    
         | 
| 
       440 
     | 
    
         
            -
                  entry =  
     | 
| 
       441 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 440 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
      
 441 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       442 
442 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       443 
443 
     | 
    
         | 
| 
       444 
     | 
    
         
            -
                  param = parameters.first
         
     | 
| 
      
 444 
     | 
    
         
            +
                  param = parameters.first #: as Entry::Parameter
         
     | 
| 
       445 
445 
     | 
    
         
             
                  assert_equal(Entry::BlockParameter::DEFAULT_NAME, param.name)
         
     | 
| 
       446 
446 
     | 
    
         
             
                  assert_instance_of(Entry::BlockParameter, param)
         
     | 
| 
       447 
447 
     | 
    
         
             
                end
         
     | 
| 
         @@ -455,15 +455,15 @@ module RubyIndexer 
     | 
|
| 
       455 
455 
     | 
    
         
             
                  RUBY
         
     | 
| 
       456 
456 
     | 
    
         | 
| 
       457 
457 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       458 
     | 
    
         
            -
                  entry =  
     | 
| 
       459 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 458 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 459 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       460 
460 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       461 
461 
     | 
    
         
             
                  first, second = parameters
         
     | 
| 
       462 
462 
     | 
    
         | 
| 
       463 
     | 
    
         
            -
                  assert_equal(Entry::RestParameter::DEFAULT_NAME, first 
     | 
| 
      
 463 
     | 
    
         
            +
                  assert_equal(Entry::RestParameter::DEFAULT_NAME, first&.name)
         
     | 
| 
       464 
464 
     | 
    
         
             
                  assert_instance_of(Entry::RestParameter, first)
         
     | 
| 
       465 
465 
     | 
    
         | 
| 
       466 
     | 
    
         
            -
                  assert_equal(Entry::KeywordRestParameter::DEFAULT_NAME, second 
     | 
| 
      
 466 
     | 
    
         
            +
                  assert_equal(Entry::KeywordRestParameter::DEFAULT_NAME, second&.name)
         
     | 
| 
       467 
467 
     | 
    
         
             
                  assert_instance_of(Entry::KeywordRestParameter, second)
         
     | 
| 
       468 
468 
     | 
    
         
             
                end
         
     | 
| 
       469 
469 
     | 
    
         | 
| 
         @@ -476,8 +476,8 @@ module RubyIndexer 
     | 
|
| 
       476 
476 
     | 
    
         
             
                  RUBY
         
     | 
| 
       477 
477 
     | 
    
         | 
| 
       478 
478 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
         
     | 
| 
       479 
     | 
    
         
            -
                  entry =  
     | 
| 
       480 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 479 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 480 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       481 
481 
     | 
    
         
             
                  assert_empty(parameters)
         
     | 
| 
       482 
482 
     | 
    
         
             
                end
         
     | 
| 
       483 
483 
     | 
    
         | 
| 
         @@ -492,17 +492,17 @@ module RubyIndexer 
     | 
|
| 
       492 
492 
     | 
    
         
             
                    end
         
     | 
| 
       493 
493 
     | 
    
         
             
                  RUBY
         
     | 
| 
       494 
494 
     | 
    
         | 
| 
       495 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 495 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       496 
496 
     | 
    
         
             
                  assert_instance_of(Entry::Method, entry, "Expected `bar` to be indexed")
         
     | 
| 
       497 
497 
     | 
    
         | 
| 
       498 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 498 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       499 
499 
     | 
    
         
             
                  assert_equal(1, parameters.length)
         
     | 
| 
       500 
500 
     | 
    
         
             
                  assert_instance_of(Entry::ForwardingParameter, parameters.first)
         
     | 
| 
       501 
501 
     | 
    
         | 
| 
       502 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 502 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
       503 
503 
     | 
    
         
             
                  assert_instance_of(Entry::Method, entry, "Expected `baz` to be indexed")
         
     | 
| 
       504 
504 
     | 
    
         | 
| 
       505 
     | 
    
         
            -
                  parameters = entry.signatures.first 
     | 
| 
      
 505 
     | 
    
         
            +
                  parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
         
     | 
| 
       506 
506 
     | 
    
         
             
                  assert_equal(2, parameters.length)
         
     | 
| 
       507 
507 
     | 
    
         
             
                  assert_instance_of(Entry::RequiredParameter, parameters[0])
         
     | 
| 
       508 
508 
     | 
    
         
             
                  assert_instance_of(Entry::ForwardingParameter, parameters[1])
         
     | 
| 
         @@ -516,8 +516,8 @@ module RubyIndexer 
     | 
|
| 
       516 
516 
     | 
    
         
             
                    end
         
     | 
| 
       517 
517 
     | 
    
         
             
                  RUBY
         
     | 
| 
       518 
518 
     | 
    
         | 
| 
       519 
     | 
    
         
            -
                  entry =  
     | 
| 
       520 
     | 
    
         
            -
                  owner_name =  
     | 
| 
      
 519 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 520 
     | 
    
         
            +
                  owner_name = entry.owner&.name
         
     | 
| 
       521 
521 
     | 
    
         | 
| 
       522 
522 
     | 
    
         
             
                  assert_equal("Foo", owner_name)
         
     | 
| 
       523 
523 
     | 
    
         
             
                end
         
     | 
| 
         @@ -533,9 +533,9 @@ module RubyIndexer 
     | 
|
| 
       533 
533 
     | 
    
         
             
                  RUBY
         
     | 
| 
       534 
534 
     | 
    
         | 
| 
       535 
535 
     | 
    
         
             
                  assert_entry("bar", Entry::Accessor, "/fake/path/foo.rb:2-15:2-18")
         
     | 
| 
       536 
     | 
    
         
            -
                  assert_equal("Hello there", @index["bar"] 
     | 
| 
      
 536 
     | 
    
         
            +
                  assert_equal("Hello there", @index["bar"]&.first&.comments)
         
     | 
| 
       537 
537 
     | 
    
         
             
                  assert_entry("other", Entry::Accessor, "/fake/path/foo.rb:2-21:2-26")
         
     | 
| 
       538 
     | 
    
         
            -
                  assert_equal("Hello there", @index["other"] 
     | 
| 
      
 538 
     | 
    
         
            +
                  assert_equal("Hello there", @index["other"]&.first&.comments)
         
     | 
| 
       539 
539 
     | 
    
         
             
                  assert_entry("baz=", Entry::Accessor, "/fake/path/foo.rb:3-15:3-18")
         
     | 
| 
       540 
540 
     | 
    
         
             
                  assert_entry("qux", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
         
     | 
| 
       541 
541 
     | 
    
         
             
                  assert_entry("qux=", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
         
     | 
| 
         @@ -565,14 +565,14 @@ module RubyIndexer 
     | 
|
| 
       565 
565 
     | 
    
         
             
                    end
         
     | 
| 
       566 
566 
     | 
    
         
             
                  RUBY
         
     | 
| 
       567 
567 
     | 
    
         | 
| 
       568 
     | 
    
         
            -
                  entry =  
     | 
| 
       569 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 568 
     | 
    
         
            +
                  entry = @index["first_method"]&.first #: as Entry::Method
         
     | 
| 
      
 569 
     | 
    
         
            +
                  assert_equal("Foo", entry.owner&.name)
         
     | 
| 
       570 
570 
     | 
    
         | 
| 
       571 
     | 
    
         
            -
                  entry =  
     | 
| 
       572 
     | 
    
         
            -
                  assert_equal("Foo::Bar",  
     | 
| 
      
 571 
     | 
    
         
            +
                  entry = @index["second_method"]&.first #: as Entry::Method
         
     | 
| 
      
 572 
     | 
    
         
            +
                  assert_equal("Foo::Bar", entry.owner&.name)
         
     | 
| 
       573 
573 
     | 
    
         | 
| 
       574 
     | 
    
         
            -
                  entry =  
     | 
| 
       575 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 574 
     | 
    
         
            +
                  entry = @index["third_method"]&.first #: as Entry::Method
         
     | 
| 
      
 575 
     | 
    
         
            +
                  assert_equal("Foo", entry.owner&.name)
         
     | 
| 
       576 
576 
     | 
    
         
             
                end
         
     | 
| 
       577 
577 
     | 
    
         | 
| 
       578 
578 
     | 
    
         
             
                def test_keeps_track_of_aliases
         
     | 
| 
         @@ -609,15 +609,15 @@ module RubyIndexer 
     | 
|
| 
       609 
609 
     | 
    
         
             
                  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:1-19")
         
     | 
| 
       610 
610 
     | 
    
         
             
                  assert_entry("baz", Entry::Method, "/fake/path/foo.rb:4-4:4-16")
         
     | 
| 
       611 
611 
     | 
    
         | 
| 
       612 
     | 
    
         
            -
                   
     | 
| 
       613 
     | 
    
         
            -
                   
     | 
| 
      
 612 
     | 
    
         
            +
                  bar = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
      
 613 
     | 
    
         
            +
                  baz = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
       614 
614 
     | 
    
         | 
| 
       615 
     | 
    
         
            -
                  assert_instance_of(Entry::SingletonClass,  
     | 
| 
       616 
     | 
    
         
            -
                  assert_instance_of(Entry::SingletonClass,  
     | 
| 
      
 615 
     | 
    
         
            +
                  assert_instance_of(Entry::SingletonClass, bar.owner)
         
     | 
| 
      
 616 
     | 
    
         
            +
                  assert_instance_of(Entry::SingletonClass, baz.owner)
         
     | 
| 
       617 
617 
     | 
    
         | 
| 
       618 
618 
     | 
    
         
             
                  # Regardless of whether the method was added through `self.something` or `class << self`, the owner object must be
         
     | 
| 
       619 
619 
     | 
    
         
             
                  # the exact same
         
     | 
| 
       620 
     | 
    
         
            -
                  assert_same( 
     | 
| 
      
 620 
     | 
    
         
            +
                  assert_same(bar.owner, baz.owner)
         
     | 
| 
       621 
621 
     | 
    
         
             
                end
         
     | 
| 
       622 
622 
     | 
    
         | 
| 
       623 
623 
     | 
    
         
             
                def test_name_location_points_to_method_identifier_location
         
     | 
| 
         @@ -630,7 +630,7 @@ module RubyIndexer 
     | 
|
| 
       630 
630 
     | 
    
         
             
                    end
         
     | 
| 
       631 
631 
     | 
    
         
             
                  RUBY
         
     | 
| 
       632 
632 
     | 
    
         | 
| 
       633 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 633 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       634 
634 
     | 
    
         
             
                  refute_equal(entry.location, entry.name_location)
         
     | 
| 
       635 
635 
     | 
    
         | 
| 
       636 
636 
     | 
    
         
             
                  name_location = entry.name_location
         
     | 
| 
         @@ -648,7 +648,7 @@ module RubyIndexer 
     | 
|
| 
       648 
648 
     | 
    
         
             
                    end
         
     | 
| 
       649 
649 
     | 
    
         
             
                  RUBY
         
     | 
| 
       650 
650 
     | 
    
         | 
| 
       651 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 651 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       652 
652 
     | 
    
         | 
| 
       653 
653 
     | 
    
         
             
                  # Matching calls
         
     | 
| 
       654 
654 
     | 
    
         
             
                  assert_signature_matches(entry, "bar()")
         
     | 
| 
         @@ -682,7 +682,7 @@ module RubyIndexer 
     | 
|
| 
       682 
682 
     | 
    
         
             
                    end
         
     | 
| 
       683 
683 
     | 
    
         
             
                  RUBY
         
     | 
| 
       684 
684 
     | 
    
         | 
| 
       685 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 685 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       686 
686 
     | 
    
         | 
| 
       687 
687 
     | 
    
         
             
                  # All calls match a forwarding parameter
         
     | 
| 
       688 
688 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(1)")
         
     | 
| 
         @@ -708,7 +708,7 @@ module RubyIndexer 
     | 
|
| 
       708 
708 
     | 
    
         
             
                    end
         
     | 
| 
       709 
709 
     | 
    
         
             
                  RUBY
         
     | 
| 
       710 
710 
     | 
    
         | 
| 
       711 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 711 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       712 
712 
     | 
    
         | 
| 
       713 
713 
     | 
    
         
             
                  # All calls with at least one positional argument match
         
     | 
| 
       714 
714 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(1)")
         
     | 
| 
         @@ -734,7 +734,7 @@ module RubyIndexer 
     | 
|
| 
       734 
734 
     | 
    
         
             
                    end
         
     | 
| 
       735 
735 
     | 
    
         
             
                  RUBY
         
     | 
| 
       736 
736 
     | 
    
         | 
| 
       737 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 737 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       738 
738 
     | 
    
         | 
| 
       739 
739 
     | 
    
         
             
                  # All calls with at least one positional argument match
         
     | 
| 
       740 
740 
     | 
    
         
             
                  assert_signature_matches(entry, "bar()")
         
     | 
| 
         @@ -762,7 +762,7 @@ module RubyIndexer 
     | 
|
| 
       762 
762 
     | 
    
         
             
                    end
         
     | 
| 
       763 
763 
     | 
    
         
             
                  RUBY
         
     | 
| 
       764 
764 
     | 
    
         | 
| 
       765 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 765 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       766 
766 
     | 
    
         | 
| 
       767 
767 
     | 
    
         
             
                  # All calls with at least one positional argument match
         
     | 
| 
       768 
768 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(1)")
         
     | 
| 
         @@ -789,7 +789,7 @@ module RubyIndexer 
     | 
|
| 
       789 
789 
     | 
    
         
             
                    end
         
     | 
| 
       790 
790 
     | 
    
         
             
                  RUBY
         
     | 
| 
       791 
791 
     | 
    
         | 
| 
       792 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 792 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       793 
793 
     | 
    
         | 
| 
       794 
794 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(...)")
         
     | 
| 
       795 
795 
     | 
    
         
             
                  assert_signature_matches(entry, "bar()")
         
     | 
| 
         @@ -817,7 +817,7 @@ module RubyIndexer 
     | 
|
| 
       817 
817 
     | 
    
         
             
                    end
         
     | 
| 
       818 
818 
     | 
    
         
             
                  RUBY
         
     | 
| 
       819 
819 
     | 
    
         | 
| 
       820 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 820 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       821 
821 
     | 
    
         | 
| 
       822 
822 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(...)")
         
     | 
| 
       823 
823 
     | 
    
         
             
                  assert_signature_matches(entry, "bar()")
         
     | 
| 
         @@ -841,10 +841,10 @@ module RubyIndexer 
     | 
|
| 
       841 
841 
     | 
    
         
             
                    end
         
     | 
| 
       842 
842 
     | 
    
         
             
                  RUBY
         
     | 
| 
       843 
843 
     | 
    
         | 
| 
       844 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 844 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       845 
845 
     | 
    
         
             
                  assert_signature_matches(entry, "bar(a: 1)")
         
     | 
| 
       846 
846 
     | 
    
         | 
| 
       847 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 847 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
       848 
848 
     | 
    
         
             
                  assert_signature_matches(entry, "baz(1)")
         
     | 
| 
       849 
849 
     | 
    
         
             
                end
         
     | 
| 
       850 
850 
     | 
    
         | 
| 
         @@ -864,27 +864,27 @@ module RubyIndexer 
     | 
|
| 
       864 
864 
     | 
    
         
             
                    end
         
     | 
| 
       865 
865 
     | 
    
         
             
                  RUBY
         
     | 
| 
       866 
866 
     | 
    
         | 
| 
       867 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 867 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       868 
868 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
       869 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 869 
     | 
    
         
            +
                  assert_equal("Foo", entry.owner&.name)
         
     | 
| 
       870 
870 
     | 
    
         | 
| 
       871 
     | 
    
         
            -
                  instance_baz, singleton_baz =  
     | 
| 
      
 871 
     | 
    
         
            +
                  instance_baz, singleton_baz = @index["baz"] #: as Array[Entry::Method]
         
     | 
| 
       872 
872 
     | 
    
         
             
                  assert_predicate(instance_baz, :private?)
         
     | 
| 
       873 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 873 
     | 
    
         
            +
                  assert_equal("Foo", instance_baz&.owner&.name)
         
     | 
| 
       874 
874 
     | 
    
         | 
| 
       875 
875 
     | 
    
         
             
                  assert_predicate(singleton_baz, :public?)
         
     | 
| 
       876 
     | 
    
         
            -
                  assert_equal("Foo::<Class:Foo>",  
     | 
| 
      
 876 
     | 
    
         
            +
                  assert_equal("Foo::<Class:Foo>", singleton_baz&.owner&.name)
         
     | 
| 
       877 
877 
     | 
    
         | 
| 
       878 
878 
     | 
    
         
             
                  # After invoking `public`, the state of `module_function` is reset
         
     | 
| 
       879 
     | 
    
         
            -
                  instance_qux, singleton_qux =  
     | 
| 
      
 879 
     | 
    
         
            +
                  instance_qux, singleton_qux = @index["qux"] #: as Array[Entry::Method]
         
     | 
| 
       880 
880 
     | 
    
         
             
                  assert_nil(singleton_qux)
         
     | 
| 
       881 
881 
     | 
    
         
             
                  assert_predicate(instance_qux, :public?)
         
     | 
| 
       882 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 882 
     | 
    
         
            +
                  assert_equal("Foo", instance_baz&.owner&.name)
         
     | 
| 
       883 
883 
     | 
    
         | 
| 
       884 
884 
     | 
    
         
             
                  # Attributes are not turned into class methods, they do become private
         
     | 
| 
       885 
     | 
    
         
            -
                  instance_attribute, singleton_attribute = @index["attribute"]
         
     | 
| 
      
 885 
     | 
    
         
            +
                  instance_attribute, singleton_attribute = @index["attribute"] #: as Array[Entry::Method]
         
     | 
| 
       886 
886 
     | 
    
         
             
                  assert_nil(singleton_attribute)
         
     | 
| 
       887 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 887 
     | 
    
         
            +
                  assert_equal("Foo", instance_attribute&.owner&.name)
         
     | 
| 
       888 
888 
     | 
    
         
             
                  assert_predicate(instance_attribute, :private?)
         
     | 
| 
       889 
889 
     | 
    
         
             
                end
         
     | 
| 
       890 
890 
     | 
    
         | 
| 
         @@ -900,13 +900,13 @@ module RubyIndexer 
     | 
|
| 
       900 
900 
     | 
    
         
             
                    end
         
     | 
| 
       901 
901 
     | 
    
         
             
                  RUBY
         
     | 
| 
       902 
902 
     | 
    
         | 
| 
       903 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 903 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       904 
904 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
       905 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 905 
     | 
    
         
            +
                  assert_equal("Foo", entry.owner&.name)
         
     | 
| 
       906 
906 
     | 
    
         | 
| 
       907 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 907 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
       908 
908 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
       909 
     | 
    
         
            -
                  assert_equal("Foo",  
     | 
| 
      
 909 
     | 
    
         
            +
                  assert_equal("Foo", entry.owner&.name)
         
     | 
| 
       910 
910 
     | 
    
         
             
                end
         
     | 
| 
       911 
911 
     | 
    
         | 
| 
       912 
912 
     | 
    
         
             
                def test_making_several_class_methods_private
         
     | 
| 
         @@ -940,13 +940,13 @@ module RubyIndexer 
     | 
|
| 
       940 
940 
     | 
    
         
             
                    end
         
     | 
| 
       941 
941 
     | 
    
         
             
                  RUBY
         
     | 
| 
       942 
942 
     | 
    
         | 
| 
       943 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 943 
     | 
    
         
            +
                  entry = @index["bar"]&.first #: as Entry::Method
         
     | 
| 
       944 
944 
     | 
    
         
             
                  assert_predicate(entry, :private?)
         
     | 
| 
       945 
945 
     | 
    
         | 
| 
       946 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 946 
     | 
    
         
            +
                  entry = @index["baz"]&.first #: as Entry::Method
         
     | 
| 
       947 
947 
     | 
    
         
             
                  assert_predicate(entry, :protected?)
         
     | 
| 
       948 
948 
     | 
    
         | 
| 
       949 
     | 
    
         
            -
                  entry =  
     | 
| 
      
 949 
     | 
    
         
            +
                  entry = @index["qux"]&.first #: as Entry::Method
         
     | 
| 
       950 
950 
     | 
    
         
             
                  assert_predicate(entry, :public?)
         
     | 
| 
       951 
951 
     | 
    
         
             
                end
         
     | 
| 
       952 
952 
     | 
    
         | 
| 
         @@ -954,14 +954,14 @@ module RubyIndexer 
     | 
|
| 
       954 
954 
     | 
    
         | 
| 
       955 
955 
     | 
    
         
             
                #: (Entry::Method entry, String call_string) -> void
         
     | 
| 
       956 
956 
     | 
    
         
             
                def assert_signature_matches(entry, call_string)
         
     | 
| 
       957 
     | 
    
         
            -
                  sig =  
     | 
| 
      
 957 
     | 
    
         
            +
                  sig = entry.signatures.first #: as !nil
         
     | 
| 
       958 
958 
     | 
    
         
             
                  arguments = parse_prism_args(call_string)
         
     | 
| 
       959 
959 
     | 
    
         
             
                  assert(sig.matches?(arguments), "Expected #{call_string} to match #{entry.name}#{entry.decorated_parameters}")
         
     | 
| 
       960 
960 
     | 
    
         
             
                end
         
     | 
| 
       961 
961 
     | 
    
         | 
| 
       962 
962 
     | 
    
         
             
                #: (Entry::Method entry, String call_string) -> void
         
     | 
| 
       963 
963 
     | 
    
         
             
                def refute_signature_matches(entry, call_string)
         
     | 
| 
       964 
     | 
    
         
            -
                  sig =  
     | 
| 
      
 964 
     | 
    
         
            +
                  sig = entry.signatures.first #: as !nil
         
     | 
| 
       965 
965 
     | 
    
         
             
                  arguments = parse_prism_args(call_string)
         
     | 
| 
       966 
966 
     | 
    
         
             
                  refute(sig.matches?(arguments), "Expected #{call_string} to not match #{entry.name}#{entry.decorated_parameters}")
         
     | 
| 
       967 
967 
     | 
    
         
             
                end
         
     | 
| 
         @@ -25,10 +25,10 @@ module RubyIndexer 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  tree = PrefixTree[String].new
         
     | 
| 
       26 
26 
     | 
    
         
             
                  ["foo", "bar", "baz"].each { |item| tree.insert(item, item) }
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                  assert_equal([" 
     | 
| 
       29 
     | 
    
         
            -
                  assert_equal([" 
     | 
| 
      
 28 
     | 
    
         
            +
                  assert_equal(["baz", "bar", "foo"], tree.search(""))
         
     | 
| 
      
 29 
     | 
    
         
            +
                  assert_equal(["baz", "bar"], tree.search("b"))
         
     | 
| 
       30 
30 
     | 
    
         
             
                  assert_equal(["foo"], tree.search("fo"))
         
     | 
| 
       31 
     | 
    
         
            -
                  assert_equal([" 
     | 
| 
      
 31 
     | 
    
         
            +
                  assert_equal(["baz", "bar"], tree.search("ba"))
         
     | 
| 
       32 
32 
     | 
    
         
             
                  assert_equal(["baz"], tree.search("baz"))
         
     | 
| 
       33 
33 
     | 
    
         
             
                  assert_empty(tree.search("qux"))
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
         @@ -80,17 +80,17 @@ module RubyIndexer 
     | 
|
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                  assert_equal(
         
     | 
| 
       82 
82 
     | 
    
         
             
                    [
         
     | 
| 
       83 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       84 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       85 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       86 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
      
 83 
     | 
    
         
            +
                      "foo/bar/support/formatting",
         
     | 
| 
      
 84 
     | 
    
         
            +
                      "foo/bar/support/prefix",
         
     | 
| 
      
 85 
     | 
    
         
            +
                      "foo/bar/support/highlight",
         
     | 
| 
      
 86 
     | 
    
         
            +
                      "foo/bar/support/diagnostic",
         
     | 
| 
      
 87 
     | 
    
         
            +
                      "foo/bar/support/rails",
         
     | 
| 
       87 
88 
     | 
    
         
             
                      "foo/bar/support/runner",
         
     | 
| 
       88 
89 
     | 
    
         
             
                      "foo/bar/support/runner2",
         
     | 
| 
       89 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       90 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       91 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       92 
     | 
    
         
            -
                      "foo/bar/support/ 
     | 
| 
       93 
     | 
    
         
            -
                      "foo/bar/support/formatting",
         
     | 
| 
      
 90 
     | 
    
         
            +
                      "foo/bar/support/source",
         
     | 
| 
      
 91 
     | 
    
         
            +
                      "foo/bar/support/syntax",
         
     | 
| 
      
 92 
     | 
    
         
            +
                      "foo/bar/support/semantic",
         
     | 
| 
      
 93 
     | 
    
         
            +
                      "foo/bar/support/selection",
         
     | 
| 
       94 
94 
     | 
    
         
             
                    ],
         
     | 
| 
       95 
95 
     | 
    
         
             
                    tree.search("foo/bar/support"),
         
     | 
| 
       96 
96 
     | 
    
         
             
                  )
         
     | 
| 
         @@ -99,7 +99,7 @@ module RubyIndexer 
     | 
|
| 
       99 
99 
     | 
    
         
             
                def test_deletion
         
     | 
| 
       100 
100 
     | 
    
         
             
                  tree = PrefixTree[String].new
         
     | 
| 
       101 
101 
     | 
    
         
             
                  ["foo/bar", "foo/baz"].each { |item| tree.insert(item, item) }
         
     | 
| 
       102 
     | 
    
         
            -
                  assert_equal(["foo/ 
     | 
| 
      
 102 
     | 
    
         
            +
                  assert_equal(["foo/baz", "foo/bar"], tree.search("foo"))
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                  tree.delete("foo/bar")
         
     | 
| 
       105 
105 
     | 
    
         
             
                  assert_empty(tree.search("foo/bar"))
         
     |