-
-
Notifications
You must be signed in to change notification settings - Fork 412
Open
Description
I am not exactly sure what the cause of this is, but the following code (simplified from real code) causes the YARD rake task to crash when in a file that's being evaluated:
class Test
def foo
x do
next
end
end
def bar
y do |var|
case var
when :def
next unless z?
end
end
end
end
Crash backlog
rake aborted!
RangeError: cannot get the first element of beginless range (RangeError)
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/ruby/ruby_parser.rb:452:in 'Range#first'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/ruby/ruby_parser.rb:452:in 'YARD::Parser::Ruby::RipperParser#on_unless_mod'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/ruby/ruby_parser.rb:56:in 'Ripper#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/ruby/ruby_parser.rb:56:in 'YARD::Parser::Ruby::RipperParser#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/ruby/ruby_parser.rb:17:in 'YARD::Parser::Ruby::RubyParser#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:442:in 'YARD::Parser::SourceParser#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:45:in 'block in YARD::Parser::OrderedParser#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/logging.rb:236:in 'YARD::Logger#capture'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:44:in 'YARD::Parser::OrderedParser#parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:371:in 'YARD::Parser::SourceParser.parse_in_order'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:114:in 'block in YARD::Parser::SourceParser.parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/logging.rb:145:in 'YARD::Logger#enter_level'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/parser/source_parser.rb:113:in 'YARD::Parser::SourceParser.parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard.rb:20:in 'YARD.parse'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/cli/yardoc.rb:259:in 'block in YARD::CLI::Yardoc#run'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/serializers/yardoc_serializer.rb:56:in 'YARD::Serializers::YardocSerializer#lock_for_writing'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/registry_store.rb:202:in 'YARD::RegistryStore#lock_for_writing'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/registry.rb:210:in 'YARD::Registry.lock_for_writing'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/cli/yardoc.rb:258:in 'YARD::CLI::Yardoc#run'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/yard-0.9.37/lib/yard/rake/yardoc_task.rb:74:in 'block in YARD::Rake::YardocTask#define'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:281:in 'block in Rake::Task#execute'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:281:in 'Array#each'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:281:in 'Rake::Task#execute'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:219:in 'block in Rake::Task#invoke_with_call_chain'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:199:in 'Monitor#synchronize'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:199:in 'Rake::Task#invoke_with_call_chain'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/task.rb:188:in 'Rake::Task#invoke'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:182:in 'Rake::Application#invoke_task'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:138:in 'block (2 levels) in Rake::Application#top_level'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:138:in 'Array#each'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:138:in 'block in Rake::Application#top_level'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:147:in 'Rake::Application#run_with_threads'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:132:in 'Rake::Application#top_level'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:83:in 'block in Rake::Application#run'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:208:in 'Rake::Application#standard_exception_handling'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/lib/rake/application.rb:80:in 'Rake::Application#run'
/Users/daniel/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/rake-13.1.0/exe/rake:27:in ''
/Users/daniel/.rbenv/versions/3.4.1/bin/rake:25:in 'Kernel#load'
/Users/daniel/.rbenv/versions/3.4.1/bin/rake:25:in ''
If the symbol on line 11 is changed from :def
to something else, YARD no longer crashes. If either of the next
keywords on lines 4 and 12 are changed, it no longer crashes either. If either method is removed, it no longer crashes as well.
I'm using YARD 0.9.37 on Ruby 3.4.1. My rake task setup looks like this:
YARD::Rake::YardocTask.new do |task|
task.files = ['test.rb']
task.options = ['--no-output']
end
jscheid and nrgbistro
Metadata
Metadata
Assignees
Labels
No labels