Workspace scan failing or stuck
Context: I primarily use the Ruby Solargraph extension inside VS Code, however over the last few days I notice the function definition links were not working and a pop up to update solarpgrahp came up, I updated but now, every time I try to load the project, the notification displaying the progress of mapping the workspace always gets stuck at 465/4915.
So naturally I try to run in on console, with this command solargraph scan -v, but it fails right after running it.
This is the version output:
$ solargraph --version
0.55.1
And this is the full output for the scan command:
$ solargraph scan -v
/home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/flow_sensitive_typing.rb:167:in `parse_isa': undefined method `type' for nil (NoMethodError)
if isa_receiver.type == :send && isa_receiver.children[0].nil? && isa_receiver.children[1].is_a?(Symbol)
^^^^^
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/flow_sensitive_typing.rb:185:in `process_isa'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/flow_sensitive_typing.rb:146:in `process_conditional'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/flow_sensitive_typing.rb:61:in `process_if'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/if_node.rb:15:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb:9:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb:30:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb:9:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/def_node.rb:44:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb:9:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:43:in `process_namespace'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:17:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb:9:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:43:in `process_namespace'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:17:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:43:in `process_namespace'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:17:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:43:in `process_namespace'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:17:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:47:in `block in process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor/base.rb:45:in `process_children'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:43:in `process_namespace'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/node_processors/namespace_node.rb:17:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/node_processor.rb:39:in `process'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/parser/parser_gem/class_methods.rb:53:in `map'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map/mapper.rb:26:in `map'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map/mapper.rb:52:in `map'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map/data.rb:26:in `generate'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map/data.rb:11:in `pins'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map.rb:21:in `pins'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map.rb:77:in `document_symbols'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-rails-1.1.0/lib/solargraph-rails.rb:38:in `local'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/convention.rb:29:in `block in for_local'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/3.3.0/set.rb:501:in `each_key'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/3.3.0/set.rb:501:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/convention.rb:28:in `for_local'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map.rb:33:in `initialize'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map.rb:172:in `new'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/source_map.rb:172:in `map'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/library.rb:494:in `block in map!'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/library.rb:493:in `each'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/library.rb:493:in `map!'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/api_map.rb:166:in `load'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/api_map.rb:182:in `load_with_cache'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/shell.rb:211:in `block in scan'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/benchmark-0.4.0/lib/benchmark.rb:304:in `measure'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/lib/solargraph/shell.rb:210:in `scan'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor/base.rb:584:in `start'
from /home/oswaldo/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/solargraph-0.55.1/bin/solargraph:5:in `<top (required)>'
from /home/oswaldo/.rbenv/versions/3.3.6/bin/solargraph:25:in `load'
from /home/oswaldo/.rbenv/versions/3.3.6/bin/solargraph:25:in `<main>'
I'm using rbenv to manage my ruby versions, and this is the ruby version i'm running
$ rbenv version
3.3.6 (set by <path_to_project>/.ruby-version)
Let me know if you need some additional information to figure this out. Thanks :)
Thanks for all the detail. I think I see what's causing the error. It looks like there are cases where the new flow-sensitive typing feature needs some extra runtime type safety. It should be fixable for the next release.
I can confirm the reported issue. Downgrading to 54.2 seem to have fixed the issue for me.
The issue seems related to is_a? call without a caller, e.g.:
if is_a? Object
end
Fix released in v0.55.3.