From: eregontp@... Date: 2020-07-27T19:30:59+00:00 Subject: [ruby-core:99359] [Ruby master Bug#17007] SystemStackError when using super inside Module included and lexically inside refinement Issue #17007 has been updated by Eregon (Benoit Daloze). Thanks for the fix! BTW this changes the behavior on a new spec, is that intended? (result is [:A, :C] instead of [:A, :LOCAL, :C] on < 2.8) https://github.com/ruby/spec/commit/b0da11b52560860e844470d145acee0ff4d4acea?w=1 ---------------------------------------- Bug #17007: SystemStackError when using super inside Module included and lexically inside refinement https://bugs.ruby-lang.org/issues/17007#change-86759 * Author: Eregon (Benoit Daloze) * Status: Closed * Priority: Normal * Assignee: shugo (Shugo Maeda) * ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- ```ruby 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 `
' 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: ```ruby 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"] ``` -- https://bugs.ruby-lang.org/ Unsubscribe: