Skip to content

Commit 894f8d2

Browse files
committed
Implement Kernel#extend(Refinement) semantics
1 parent de83d7d commit 894f8d2

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

spec/ruby/core/refinement/extend_object_spec.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
Module.new do
1212
refine c do
1313
called = false
14-
define_method(:extend_object){called = true}
15-
proc{c.extend(self)}.should raise_error(TypeError)
14+
define_method(:extend_object) { called = true }
15+
-> {
16+
c.extend(self)
17+
}.should raise_error(TypeError)
1618
called.should == false
1719
end
1820
end

src/main/ruby/truffleruby/core/kernel.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ def extend(*modules)
327327
modules.reverse_each do |mod|
328328
if !Primitive.is_a?(mod, Module) or Primitive.is_a?(mod, Class)
329329
raise TypeError, "wrong argument type #{Primitive.class(mod)} (expected Module)"
330+
elsif Primitive.is_a?(mod, Refinement)
331+
raise TypeError, 'Cannot extend object with refinement'
330332
end
331333

332334
mod.__send__ :extend_object, self

0 commit comments

Comments
 (0)