📑
[Bug #20948] module (expr)::Foo 経由で定数を参照すると誤った値を参照してしまうというバグ報告
[Bug #20948] Constant references incorrectly cached in module (expr)::Foo
- 以下のように
module (expr)::Foo
経由で定数を参照すると誤った値を参照してしまうというバグ報告
module M1
module Foo
X = 1
end
end
module M2
module Foo
X = 2
end
end
[M1, M2].each do
module _1::Foo
# 1, 2 が出力されてほしいが実際には 1, 1 と出力される
p X
end
end
- 以下のように参照された場合は問題ないので上のコード特有なんですかね?
# 直接参照した場合
p M1::Foo::X # => 1
p M2::Foo::X # => 2
# module を経由しない場合
[M1, M2].each do
p _1::Foo::X
end
- かなりニッチなバグなんですがハマるときつそう
Discussion