Project

General

Profile

Bug #10456

Updated by nobu (Nobuyoshi Nakada) over 9 years ago

<pre>ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0]</pre> 

 I experienced something very weird, when you define a method like this: 

 ~~~ruby <pre> 
 def wat(something: nil &block) 
 end 
 ~~~ </pre> 

 It actually doesn't come back as a syntax error 

 ~~~ <pre> 
 Roberts-MacBook-Pro-2:~ robert$ cat test.rb; echo 
 def wat(name: "" &block) 
 end 
 Roberts-MacBook-Pro-2:~ robert$ ruby -c test.rb 
 Syntax OK 
 ~~~ </pre> 

 Within the method, the block is never assigned either actually on method call: 

 ~~~ruby <pre> 
 irb(main):007:0> def wat(something: nil &block) 
 irb(main):008:1> puts "Block: #{block}" 
 irb(main):009:1> end 
 => :wat 
 irb(main):010:0> wat(something: 'hello') { "My block here" } 
 NameError: undefined local variable or method `block' for main:Object 
   from (irb):8:in `wat' 
   from (irb):10 
   from /Users/robert/.rbenv/versions/2.1.1/bin/irb:11:in `<main>' 
 ~~~ </pre> 

 This behavior seems unlikely, it caught me off guard for sure.

Back