前田です。

RC2003のスライド(http://www.rubyist.net/~matz/slides/rc2003/mgp00011.html)
をながめていて、

* Block parameters will be block local
  even if variables with same names exist

という記述を見つけたのですが、

  def foo
    x = 1
    iter do |x|
      p x # このxはブロックローカル
    end
    p x # このxはメソッドローカル
  end

ということですよね?

こういうコード(内側のブロックで同じ名前の変数を再定義するコード)
はエラーになった方が好ましいように思うのですが、いかがでしょうか?

-- 
前田 修吾