Project

General

Profile

Bug #2468

Array expansion inside case/when gives unexpected results

Added by romuloceccon (Rômulo Ceccon) about 9 years ago. Updated almost 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 1.8.8dev (2009-12-07 revision 26034) [i386-mswin32_90]
[ruby-core:27116]

Description

=begin
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]
=end


Related issues

Related to Ruby 1.8 - Bug #2555: "case n when *VALID" Broken in Ruby 1.8.8; affects Ruby on RailsClosed01/05/2010Actions
Related to Ruby trunk - Bug #2226: case 文の式が省略され when 節に配列展開があるときの挙動ClosedActions
Has duplicate Ruby 1.8 - Bug #2551: case/when matches literal *[1,2,3] but not variable *aryClosed01/03/2010Actions

Associated revisions

Revision 0759512a
Added by knu (Akinori MUSHA) about 9 years ago

  • test/ruby/test_array.rb (TestArray#test_splat): Add test cases where splat fails in when clause. ref [Bug #2468]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@26589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 26589
Added by knu (Akinori MUSHA) about 9 years ago

  • test/ruby/test_array.rb (TestArray#test_splat): Add test cases where splat fails in when clause. ref [Bug #2468]

History

#1

Updated by knu (Akinori MUSHA) about 9 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
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.

=end

#2

Updated by marcandre (Marc-Andre Lafortune) about 9 years ago

  • Status changed from Closed to Open

=begin

=end

#3

Updated by naruse (Yui NARUSE) almost 9 years ago

  • Status changed from Open to Closed

=begin

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.
=end

Also available in: Atom PDF