Closed postmodern closed 12 years ago
This seems like a third party issue to me for a few reasons;
First because it seems to be failing inside of Rubinius code, though the trace might be misleading. But more importantly, we only define to_ary in one place and it is done purposely to handle splatting. MRI handles this behavior in 1.9, Rubinius should too... The commit is here 26607e05b568171f7858bed1e6c136bdc3205ced for reference
FYI, I should add that even 1.8.6 accepts this: http://codepad.org/BGzRCznt (not sure how long this URL will last). A bug should probably be filed with Rubinius for this.
Tested yardoc again on some trivial code and found an exception coming from yardoc. RubyGems was likely mangling the backtraces.
mkdir -p test_yard/lib/
cd test_yard/
cat >test_yard/lib/test.rb
module TestYard
class Test
end
end
EOF
$ rbx -S yardoc
[error]: Unhandled exception in YARD::Handlers::Ruby::Legacy::ClassHandler:
[error]: in `lib/test_yard.rb`:2:
2: class Test
[error]: TypeError: to_ary must return an Array
[error]: Stack trace:
kernel/common/enumerable.rb:268:in `any?'
kernel/bootstrap/array.rb:68:in `each'
kernel/common/enumerable.rb:268:in `any?'
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/lib/yard/code_objects/class_object.rb:33:in `is_exception?'
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/lib/yard/code_objects/class_object.rb:15:in `initialize'
kernel/alpha.rb:96:in `new'
An exception occurred running /vault/0/src/rubinius/gems/1.8/bin/yardoc
to_ary must return an Array (TypeError)
Backtrace:
{ } in Enumerable(YARD::CodeObjects::CodeObjectList)#any? at \
kernel/common/enumerable.rb:268
Array(YARD::CodeObjects::CodeObjectList)#each at kernel/bootstrap/array.rb:68
Enumerable(YARD::CodeObjects::CodeObjectList)#any? at kernel/common
/enumerable.rb:268
{ } in YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#class_list at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:181
Array#map at kernel/bootstrap/array18.rb:18
YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#class_list at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:178
YARD::Templates::ErbCache(Object)#_erb_cache_1 at /vault/0/src/rubinius/gems
/1.8/gems/yard-0.7.4
/templates/default/fulldoc
/html/full_list_class.erb:2
YARD::Templates::Template(Object)#erb at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/templates
/template.rb:238
YARD::Templates::ErbCache(Object)#_erb_cache_0 at /vault/0/src/rubinius/gems
/1.8/gems/yard-0.7.4
/templates/default/fulldoc
/html/full_list.erb:33
YARD::Templates::Template(Object)#erb at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/templates
/template.rb:238
YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#generate_class_list at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:150
{ } in YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#generate_assets at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:124
Array#each at kernel/bootstrap/array.rb:68
YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#generate_assets at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:121
YARD::Templates::Engine::Template__vault_0_src_rubinius_gems_1_8_gems_yard_0_7_4_templates_default_fulldoc_html(Object)#init at \
/vault/0/src/rubinius/gems/1.8/gems/yard-0.7.4/templates/default/fulldoc/html/setup.rb:7
YARD::Templates::Template(Object)#initialize at /vault/0/src/rubinius/gems/1.8
/gems/yard-0.7.4/lib/yard
/templates/template.rb:144
YARD::Templates::Template::ClassMethods(Module)#new at /vault/0/src/rubinius
/gems/1.8/gems
/yard-0.7.4/lib/yard
/templates
/template.rb:86
YARD::Templates::Template::ClassMethods(Module)#run at /vault/0/src/rubinius
/gems/1.8/gems
/yard-0.7.4/lib/yard
/templates
/template.rb:91
YARD::Templates::Engine.generate at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/templates
/engine.rb:103
YARD::CLI::Yardoc#run_generate at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/cli/yardoc.rb:306
YARD::CLI::Yardoc#run at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/cli/yardoc.rb:219
YARD::CLI::Command.run at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/lib/yard/cli/command.rb:13
Object#__script__ at /vault/0/src/rubinius/gems/1.8/gems
/yard-0.7.4/bin/yardoc:4
Kernel(Object)#load at kernel/common/kernel.rb:588
Object#__script__ at /vault/0/src/rubinius/gems/1.8/bin
/yardoc:19
Rubinius::CodeLoader#load_script at kernel/delta/codeloader.rb:67
Rubinius::CodeLoader.load_script at kernel/delta/codeloader.rb:109
Rubinius::Loader#script at kernel/loader.rb:630
Rubinius::Loader#main at kernel/loader.rb:834
Correction again, this bug happens in 1.8 mode as well as 1.9 mode. Likely a Rubinius regression.
While installing a gem under rubinius 1.2.0dev, I noticed a bunch of these exceptions: