Issue #15720 has been updated by usa (Usaku NAKAMURA).

Backport changed from 2.4: UNKNOWN, 2.5: REQUIRED, 2.6: DONE to 2.4: UNKNOWN, 2.5: DONE, 2.6: DONE

ruby_2_5 r67765 merged revision(s) 5e018214e7435030727a97ac49db038d96438e74.

----------------------------------------
Bug #15720: SystemStackError when referencing a refinement in a module that isn't used
https://bugs.ruby-lang.org/issues/15720#change-81032

* Author: chocolateboy (Chocolate Boy)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
* ruby -v: ruby 2.7.0dev (2019-03-21 trunk 67332) [x86_64-linux]
* Backport: 2.4: UNKNOWN, 2.5: DONE, 2.6: DONE
----------------------------------------
```ruby
module M1
  refine Kernel do
    def foo
      'foo called!'
    end
  end
end

module M2
  refine Kernel do
    def bar
      'bar called!'
    end
  end
end

using M1

puts foo
puts bar
```

Expected:

```
foo called!
Traceback (most recent call last):
bug.rb:20:in `<main>': undefined local variable or method `bar' for main:Object (NameError)
```

Actual:

```
foo called!
Traceback (most recent call last):
bug.rb:20:in `<main>': stack level too deep (SystemStackError)
```

Platform: Linux (Arch)

ruby -v:

- ruby 2.7.0dev (2019-03-21 trunk 67332) [x86_64-linux]
- ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
- ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]

---Files--------------------------------
bug.rb (188 Bytes)
sse-unused-refinement.patch (1.85 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>