Actions
Bug #13956
closedSegmentation fault when calling Method#using with a non-module argument and block
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
Backport:
Description
Module#usingをモジュールでない引数とブロックをつけて呼び出すとクラッシュします。
再現プログラムは以下です。
def using(x)
yield x
end
using(1){ }
元々、別のメソッドにusingと名付けてそれを呼び出すコードを書いてました(Module#usingの存在は失念していました)。
なぜそうなるのか理解していないのですが、トップレベルで定義したメソッドはModuleのメソッドをオーバーライドしないようで、
とにかく結果としてはModule#usingが呼ばれました。
元々の意図が分かりやすいよう、再現プログラムにはusingのメソッド定義を含めていますが、
Top-levelにusingのメソッド定義があろうとなかろうとクラッシュは発生します。
Top-level以外のスコープでも同様のクラッシュは発生しますが、詳細には確認していません。
クラスやモジュールの定義の中で再現することは確認しました。
OS: macOS Sierra(10.12.6)
CPU: 2.2Ghz Intel Core i7
Memory: 16GB
Ruby version: ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
installed by ruby-build
Files
Actions
Like0
Like0Like0Like0