Actions
Bug #17007
closedSystemStackError when using super inside Module included and lexically inside refinement
    Bug #17007:
    SystemStackError when using super inside Module included and lexically inside refinement
  
Description
class C
  def foo
    ["C"]
  end
end
refinement = Module.new do
  R = refine C do
    def foo
      ["R"] + super
    end
    include Module.new {
      def foo
        ["M"] + super
      end
    }
  end
end
using refinement
p C.new.foo
gives
$ ruby bug_refine_super.rb
Traceback (most recent call last):
	10920: from bug_refine_super.rb:22:in `<main>'
	10919: from bug_refine_super.rb:10:in `foo'
	10918: from bug_refine_super.rb:15:in `foo'
	10917: from bug_refine_super.rb:10:in `foo'
	10916: from bug_refine_super.rb:15:in `foo'
	10915: from bug_refine_super.rb:10:in `foo'
	10914: from bug_refine_super.rb:15:in `foo'
	10913: from bug_refine_super.rb:10:in `foo'
	 ... 10908 levels...
	    4: from bug_refine_super.rb:15:in `foo'
	    3: from bug_refine_super.rb:10:in `foo'
	    2: from bug_refine_super.rb:15:in `foo'
	    1: from bug_refine_super.rb:10:in `foo'
bug_refine_super.rb:15:in `foo': stack level too deep (SystemStackError)
OTOH defining the module lexically outside of refine works:
m = Module.new {
  def foo
    ["M"] + super
  end
}
refinement = Module.new do
  R = refine C do
    def foo
      ["R"] + super
    end
    include m
  end
end
# result: ["R", "M", "C"]
  
Actions