[ruby-core:27378] [Bug #2551] case/when matches literal *[1,2,3] but not variable *ary

0 views
Skip to first unread message

Jeremy Kemper

unread,
Jan 3, 2010, 6:04:30 AM1/3/10
to ruby...@ruby-lang.org
Bug #2551: case/when matches literal *[1,2,3] but not variable *ary
http://redmine.ruby-lang.org/issues/show/2551

Author: Jeremy Kemper
Status: Open, Priority: High
Category: core, Target version: Ruby 1.8.8
ruby -v: ruby 1.8.8dev (2010-01-01 revision 26212) [i386-darwin10.2.0]

Matching a splat works with a literal but not a variable:

$ irb188
>> case 42; when *[41..43]; true end
=> true
>> a = [41..43]
=> [41..43]
>> case 42; when *a; true end
=> nil

Behaves correctly on 1.9.2dev and 1.8.7:

$ irb192
>> RUBY_DESCRIPTION
=> "ruby 1.9.2dev (2010-01-03 trunk 26233) [x86_64-darwin10.2.0]"
>> case 42; when *[41..43]; true end
=> true
>> a = [41..43]
=> [41..43]
>> case 42; when *a; true end
=> true

This breaks a lot of code, such as the Builder library which escapes all values as '***' on 1.8.8dev.

A test case:

diff --git a/test/ruby/test_case.rb b/test/ruby/test_case.rb
index af925d1..f996ed6 100644
--- a/test/ruby/test_case.rb
+++ b/test/ruby/test_case.rb
@@ -52,5 +52,13 @@ class TestCase < Test::Unit::TestCase
else
assert(false)
end
+
+ range = [41..43]
+ case 42
+ when *range
+ assert(true)
+ else
+ assert(false)
+ end
end
end


----------------------------------------
http://redmine.ruby-lang.org

Jeremy Kemper

unread,
Jan 3, 2010, 6:08:15 AM1/3/10
to ruby...@ruby-lang.org
Issue #2551 has been updated by Jeremy Kemper.


Duplicates #2468.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/2551

----------------------------------------
http://redmine.ruby-lang.org

Jeremy Kemper

unread,
Jan 27, 2010, 5:25:06 PM1/27/10
to ruby...@ruby-lang.org
Issue #2551 has been updated by Jeremy Kemper.


This is a show-stopper bug that affects a lot of my code. If it's not going to be fixed, perhaps the 19migration/looser_args merge should be reverted.

Jeremy Kemper

unread,
Feb 6, 2010, 10:25:40 PM2/6/10
to ruby...@ruby-lang.org
Issue #2551 has been updated by Jeremy Kemper.


r26589 adds a failing test case but no fix. Please reopen.

Reply all
Reply to author
Forward
0 new messages