青山です。

dev に移動します。

On Wed, Mar 20, 2002 at 04:44:29PM +0900,
 Wakou Aoyama wrote:

> ところで、定数の再定義のワーニングは、以前(1.2以前?)は起動オプション
> -w を指定した場合だけに出ていたはずですが、無条件にワーニングを出すほ
> どに危険な行為、と扱いが変わったのでしょうか?

class TEST
  CONST = 1
end
class TEST
  CONST = 2
end

1.2 NameError
1.4 無条件に warning (-w 指定で二重の warning)
1.6 無条件に warning
(1.7 無条件に warning)


CONST = 1
class TEST
  CONST = 2
end

1.2 -w 指定で warning
1.4 -w 指定で warning
1.6 -w 指定でも warning 無し
(1.7 -w 指定でも warning 無し)


このように変化していたんですね。1.6 からは、下位クラスでの再定義には
-w でも warning が出なくなったようですし、思い切って、さらにゆるめて、
同クラスでの再定義を、無条件に warning から -w で warning にするとい
うのはどうでしょうか?

warning などに気を使っている人ならば、-w を使っている可能性が高いよう
に思われますし、一方、出来上がったものを使うだけ、という人には warning
を出しても不安がられるだけだったりしますし。

また、String, Array, Hash ならば、#replace で warning を逃れられる場合
もありますが、上の例のように Numeric などの場合には、warning を逃れる
手段が無いという面もありますので。

CONST = 1
class TEST
  CONST = 2  # warning 無し (現状まま)
end
class TEST
  CONST = 3  # -w で warning (現状は無条件に warning)
end


-- 
青山 和光 Wakou Aoyama  <wakou / fsinet.or.jp>