yieldとProc#call

MatzさんのyieldとProc#callを読んで。
Matzさんが書いていた、

  • Proc#yieldメソッドを導入
  • nil.yieldメソッドも用意。これが「no block given」のメッセージを出す

という二点は、現在のRubyでやるとしたら、以下のようになるという意味でしょうか。

class Proc
  def yield(*a)
    call(*a)
  end
end

def nil.yield(*a)
  raise LocalJumpError, "no block given", caller(1)
end

def foo2(&block)
   block.yield("Rubyco")
end

foo2() do |name|
  puts "Hello, #{name}!"
end

foo2()

実行結果です。

Hello, Rubyco!
a.rb:12:in `foo2': no block given (LocalJumpError)
        from a.rb:19

caller(1)を使えば、呼び出し側のメソッド名(上記なら`foo2')が出るように思うのですが、これは素人考えでしょうか。