Issue #9335 has been updated by fdr (Daniel Farina).


This seems to apply to 2.0 as well.  Here's the commit found by git bisect:

commit 93b6f8d6195564d0884ee00f536a951f4c26288c
Author: ko1 <ko1 / b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date:   Wed Aug 8 07:52:19 2012 +0000

    * compile.c, insns.def (checkmatch):
      remove checkincludearray instruction and
      add new instruction checkmatch.
      This change is to solve
      [Bug #4438] "rescue args type check omitted".
    * iseq.c: increment ISEQ_MAJOR_VERSION because removal of
      checkincludearray instruction.
    * vm_core.h: add several definitions for
      the checkmatch instruction.
    * vm_insnhelper.c (check_match): added.
    * bootstraptest/test_exception.rb: add a test.
    * test/ruby/test_exception.rb: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36658 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

----------------------------------------
Bug #9335: dynamic rescue regression in Ruby 2.1
https://bugs.ruby-lang.org/issues/9335#change-44003

Author: fdr (Daniel Farina)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN


The following type of rescue block appears broken:

begin
  raise 'hello'
rescue ->(e) { true }
end

In Ruby 1.9.3p484, this exits with a normal exit code and no output.

On Ruby 2.1.0, it instead yields:

/tmp/badin21.rb:4:in `rescue in <main>': class or module required for rescue clause (TypeError)
	from /tmp/badin21.rb:2:in `<main>'

Some research suggests this is a regression to the pre-1.9.2 behavior, and there doesn't seem to be any direct mention about this change in the changelog of 2.1 nor 2.0.


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