Project

General

Profile

Bug #9376

Updated by nobu (Nobuyoshi Nakada) almost 11 years ago

=begin 
 Since method (({def})) def returns the symbol in 2.1, it opens the door for a decorator pattern in which the method def is the argument to a method. 
    This currently works, unless the method happens to call another method and pass it a (({do/end})) do/end block. 
    However, using (({{}})) {} instead causes no syntax error. 
    Here is the code to reproduce: 

  

 ``` 
 def foo(meth); end 
  
 x = Object.new 

  

 foo def bar(arg) 
    
   x.tap { }       #=> (no problem here) 
    
   x.tap do end    #=> syntax error, unexpected keyword_do_block, expecting keyword_end (SyntaxError) 
  
 end 
 =end ``` 

Back