Issue #6354 has been updated by ktsj (Kazuki Tsujimoto).


Such as:

 def f
   class << self
     yield
   end
 end

----------------------------------------
Feature #6354: Remove escape (break/return/redo/next support) from class/module scope
https://bugs.ruby-lang.org/issues/6354#change-26322

Author: ko1 (Koichi Sasada)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 


Let's remove global escape (break/return/redo/next support) from class/module scope.

Yes, it introduces incompatibility.  However, anyone use it?
I think the following examples are evil (difficult to understand).

  # examples:
  1.times{
    class C
      break # break from 1.times
    end
  }
  
  1.times{
    class C
      module M
        break # break from 1.times
      end
    end
  }
  
  3.times{|n|
    p n # repeat print 0
    class C
      redo
    end
  }
  
  ->{
    class C
      return return from outer lambda block
    end
  }.call
  
  ->{
    proc{
      class C
        return # return from outer lambda (not proc) block
      end
    }.call
  }.call

etc, etc.




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