Bug #2468
Array expansion inside case/when gives unexpected results
| Status: | Closed | Start date: | 12/10/2009 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | - | % Done: | 100% |
|
| Category: | core | |||
| Target version: | Ruby 1.8.8 | |||
| ruby -v: | ruby 1.8.8dev (2009-12-07 revision 26034) [i386-mswin32_90] |
Description
Given the following script:
arr = [1, 2, 3]
case 2
when 1, 2, 3
puts "2 is in range #{arr.inspect}"
else
puts "2 is out of range #{arr.inspect}"
end
case 2
when *arr # this is the only thing different from the previous statement
puts "2 is in range #{arr.inspect}"
else
puts "2 is out of range #{arr.inspect}"
end
Ruby 1.8.8dev gives me the following output:
$ ruby -v
ruby 1.8.8dev (2009-12-07 revision 26034) [i386-mswin32_90]
$ ruby casebug.rb
2 is in range [1, 2, 3]
2 is out of range [1, 2, 3]
I'd expect the same results other versions give:
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32_90]
$ ruby casebug.rb
2 is in range [1, 2, 3]
2 is in range [1, 2, 3]
$ ruby -v
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]
$ ruby casebug.rb
2 is in range [1, 2, 3]
2 is in range [1, 2, 3]
Related issues
| related to ruby-trunk - Bug #2226: case 文の式が省略され when 節に配列展開があるときの挙動 | Closed | |||
| related to Ruby 1.8 - Bug #2555: "case n when *VALID" Broken in Ruby 1.8.8; affects Ruby o... | Closed | 01/05/2010 | ||
| duplicated by Ruby 1.8 - Bug #2551: case/when matches literal *[1,2,3] but not variable *ary | Closed | 01/03/2010 |
Associated revisions
* test/ruby/test_array.rb (TestArray#test_splat): Add test cases
where splat fails in when clause. ref [Bug #2468]
History
Updated by Akinori MUSHA almost 2 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r26589. Romulo, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.
Updated by Marc-Andre Lafortune almost 2 years ago
- Status changed from Closed to Open
Updated by Yui NARUSE almost 2 years ago
- Status changed from Open to Closed
> I wish "ref [Bug #...]" would have been parsed just like "cf: [Bug #...]". #... may change when the ticket moves from bug to backport or something. So writing ref #... is correct.