From: ko1@... Date: 2015-06-10T16:25:02+00:00 Subject: [ruby-core:69517] [Ruby trunk - Bug #11246] refine block doesn't respect "lexical" refinement information Issue #11246 has been updated by Koichi Sasada. Description updated ---------------------------------------- Bug #11246: refine block doesn't respect "lexical" refinement information https://bugs.ruby-lang.org/issues/11246#change-52823 * Author: Koichi Sasada * Status: Open * Priority: Normal * Assignee: Shugo Maeda * ruby -v: ruby 2.3dev * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- The following program making 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 using R1 # 1 module R2 using R1 # 2 refine C do # using R1 # 3 def bar C.new.foo end end end using R2 C.new.bar ``` Without `using R1 # 3`, `C#foo` was called in `R2::C#bar`. By `using R1 #1` and `#2`, we declared that this lexical scope should use R1. However, it seems that this declaration is ignored. Is it an intentional behavior? -- https://bugs.ruby-lang.org/