Project

General

Profile

Bug #11283

Updated by nepalez (Andrew Kozin) almost 9 years ago

That is how it works: 

     

    module Test 
       
      def self.build(&block) 
         klass = Class.new(Object) 
         klass.__send__(:define_method, :foo) 
         klass.__send__(:define_method, :bar) 
         klass 
       end 
     end 

     Tested = Test.build { :foo } 
     # warning: tried to create Proc object without a block 
     # => Tested 
     Tested.new.foo 
     # => :foo 
     Tested.new.bar 
     # => :foo 

 The block is assigned to all methods implicitly, while it wasn't asked to. 

 The interpreter sends warning message, but doesn't raise `SyntaxError` as it IMHO should be. 

 The behaviour is tested under MRI 1.9.3, 2.0, 2.1, 2.2, ruby-head. Exceptions are raised by Rbx and Jruby interpreters.

Back