Skip to content

Commit d1e39d9

Browse files
authored
Merge pull request jruby#9212 from evaniainbrooks/8876-owner
Fix method owner when using import_methods
2 parents f21870a + e7908a7 commit d1e39d9

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

core/src/main/java/org/jruby/RubyModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6878,6 +6878,7 @@ private static void refinementImportMethodsIter(ThreadContext context, RubyModul
68786878
}
68796879

68806880
DynamicMethod dup = entry.getValue().dup();
6881+
dup.setImplementationClass(selfModule);
68816882

68826883
// maybe insufficient if we have already compiled assuming no refinements
68836884
((AbstractIRMethod) dup).getIRScope().setIsMaybeUsingRefinements();

spec/ruby/core/refinement/import_methods_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,26 @@ def foo(number)
242242
end
243243
end
244244

245+
it "correctly sets owner as the refinement module" do
246+
str_utils = Module.new do
247+
def indent(level)
248+
" " * level + self
249+
end
250+
end
251+
252+
refinement = Module.new do
253+
refine String do
254+
import_methods str_utils
255+
end
256+
end
257+
258+
Module.new do
259+
using refinement
260+
261+
String.instance_method(:indent).owner.should == refinement.refinements.first
262+
end
263+
end
264+
245265
context "when methods are not defined in Ruby code" do
246266
it "raises ArgumentError" do
247267
Module.new do

0 commit comments

Comments
 (0)