From: ruby-core@... Date: 2015-06-06T03:05:37+00:00 Subject: [ruby-core:69476] [Ruby trunk - Bug #11228] [Rejected] Classes Cannot be used in case Statements Issue #11228 has been updated by Marc-Andre Lafortune. Status changed from Open to Rejected This is per spec, please check the definition of `Class#===`, since a `switch` is sugar for calls to `===`. String === String # => false ---------------------------------------- Bug #11228: Classes Cannot be used in case Statements https://bugs.ruby-lang.org/issues/11228#change-52777 * Author: Martin Vahi * Status: Rejected * Priority: Normal * Assignee: * ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- ~~~ #!/usr/bin/env ruby def flaw_demo cl_selector="A String instance".class case cl_selector when String puts "flaw_demo: This is, where the control flow should be." when Regexp puts "flaw_demo: Hi Regexp!" else puts "flaw_demo: The control flow should not reach this line." end # case end ; flaw_demo() CONST_1=42 CONST_2=99 def works_ok i_selector=42 case i_selector when CONST_1 puts " works_ok: This is, where the control flow should be." when CONST_2 puts " works_ok: Hi CONST_2!" else puts " works_ok: The control flow should not reach this line." end # case end ; works_ok() # Console output: # flaw_demo: The control flow should not reach this line. # works_ok: This is, where the control flow should be. ~~~ ---Files-------------------------------- test_case.rb (798 Bytes) -- https://bugs.ruby-lang.org/