mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Remove Refinement#{extend_object,append_features,prepend_features}
Also make include, prepend, and extend raise a TypeError if one of the modules is a refinement. Implements [Feature #18270]
This commit is contained in:
parent
f22296d27e
commit
791343b5bb
Notes:
git
2022-01-06 03:59:29 +09:00
5 changed files with 83 additions and 5 deletions
21
spec/ruby/core/refinement/append_features_spec.rb
Normal file
21
spec/ruby/core/refinement/append_features_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require_relative '../../spec_helper'
|
||||
|
||||
describe "Refinement#append_features" do
|
||||
ruby_version_is "3.2" do
|
||||
it "is not defined" do
|
||||
Refinement.should_not have_private_instance_method(:append_features)
|
||||
end
|
||||
|
||||
it "is not called by Module#include" do
|
||||
c = Class.new
|
||||
Module.new do
|
||||
refine c do
|
||||
called = false
|
||||
define_method(:append_features){called = true}
|
||||
proc{c.include(self)}.should raise_error(TypeError)
|
||||
called.should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
spec/ruby/core/refinement/extend_object_spec.rb
Normal file
21
spec/ruby/core/refinement/extend_object_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require_relative '../../spec_helper'
|
||||
|
||||
describe "Refinement#extend_object" do
|
||||
ruby_version_is "3.2" do
|
||||
it "is not defined" do
|
||||
Refinement.should_not have_private_instance_method(:extend_object)
|
||||
end
|
||||
|
||||
it "is not called by Object#extend" do
|
||||
c = Class.new
|
||||
Module.new do
|
||||
refine c do
|
||||
called = false
|
||||
define_method(:extend_object){called = true}
|
||||
proc{c.extend(self)}.should raise_error(TypeError)
|
||||
called.should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
21
spec/ruby/core/refinement/prepend_features_spec.rb
Normal file
21
spec/ruby/core/refinement/prepend_features_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
require_relative '../../spec_helper'
|
||||
|
||||
describe "Refinement#prepend_features" do
|
||||
ruby_version_is "3.2" do
|
||||
it "is not defined" do
|
||||
Refinement.should_not have_private_instance_method(:prepend_features)
|
||||
end
|
||||
|
||||
it "is not called by Module#prepend" do
|
||||
c = Class.new
|
||||
Module.new do
|
||||
refine c do
|
||||
called = false
|
||||
define_method(:prepend_features){called = true}
|
||||
proc{c.prepend(self)}.should raise_error(TypeError)
|
||||
called.should == false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue