Bug #2468: Array expansion inside case/when gives unexpected results
http://redmine.ruby-lang.org/issues/show/2468

Author: Romulo Ceccon
Status: Open, Priority: Normal
Category: core, Target version: Ruby 1.8.8
ruby -v: ruby 1.8.8dev (2009-12-07 revision 26034) [i386-mswin32_90]

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]


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