From: zn@... Date: 2021-01-29T05:19:41+00:00 Subject: [ruby-core:102283] [Ruby master Bug#17590] `M.prepend M` has hidden side effect Issue #17590 has been reported by znz (Kazuhiro NISHIYAMA). ---------------------------------------- Bug #17590: `M.prepend M` has hidden side effect https://bugs.ruby-lang.org/issues/17590 * Author: znz (Kazuhiro NISHIYAMA) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- `M.prepend M` raises ArgumentError, but it has hidden side effect. ```ruby module M; end class C; end C.prepend M C.include M M.prepend M rescue nil module M2; end M2.prepend M C.include M2 p C.ancestors # => [M, C, M2, M, M2, Object, Kernel, BasicObject] ``` ```ruby module M; end class C; end C.prepend M C.include M module M2; end M2.prepend M C.include M2 p C.ancestors # => [M, C, M2, Object, Kernel, BasicObject] ``` -- https://bugs.ruby-lang.org/ Unsubscribe: