From: ko1@... Date: 2015-06-10T16:44:08+00:00 Subject: [ruby-core:69518] [Ruby trunk - Bug #11247] [Open] Should position of `using` affect the behavior? Issue #11247 has been reported by Koichi Sasada. ---------------------------------------- Bug #11247: Should position of `using` affect the behavior? https://bugs.ruby-lang.org/issues/11247 * Author: Koichi Sasada * Status: Open * Priority: Normal * Assignee: Shugo Maeda * ruby -v: ruby 2.3.0dev (2015-06-11 trunk 50798) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- The following script makes two refinements refine class C. ```ruby class C def foo p C end end module R1 refine C do def foo p R1 super end end end module R2 refine C do def bar C.new.foo end using R1 def baz C.new.foo end end end using R2 C.new.bar C.new.baz ``` R2 refines C with methods `bar` and `baz`. The difference is the place of `using`. `bar` is located before `using` and `baz` is after. Recent fix changed behavior of this script. * trunk in May: C and R1, C * current trunk: R1, C and R1, C This change is caused by sharing CREF between methods in same CREF scope. It reduce memory consumption (before this fix, we need one CREF per one method). Is it acceptable change or unacceptable? -- https://bugs.ruby-lang.org/