summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2025-11-22 19:58:43 -0800
committerJeremy Evans <code@jeremyevans.net>2025-12-10 07:35:50 +0900
commite436dba9fee4c75104212ad0fd16ab7f753985c4 (patch)
tree9b95734630cf5e0517604acdda4d0405a6b14518 /spec
parent76fb0d244b95a23116bfe72bb2422395c3a76477 (diff)
Use rb_error_frozen_object in rb_class_modify_check
This provides information on the class of the frozen object. It also results in a much simpler implementation. Fixes [Bug #21374]
Diffstat (limited to 'spec')
-rw-r--r--spec/ruby/core/exception/frozen_error_spec.rb4
-rw-r--r--spec/ruby/language/def_spec.rb9
2 files changed, 9 insertions, 4 deletions
diff --git a/spec/ruby/core/exception/frozen_error_spec.rb b/spec/ruby/core/exception/frozen_error_spec.rb
index 51eb79cace..1cf35496d4 100644
--- a/spec/ruby/core/exception/frozen_error_spec.rb
+++ b/spec/ruby/core/exception/frozen_error_spec.rb
@@ -26,9 +26,11 @@ describe "FrozenError#message" do
object = Object.new
object.freeze
+ msg_class = RUBY_VERSION >= "4" ? "Object" : "object"
+
-> {
def object.x; end
- }.should raise_error(FrozenError, "can't modify frozen object: #{object}")
+ }.should raise_error(FrozenError, "can't modify frozen #{msg_class}: #{object}")
object = [].freeze
-> { object << nil }.should raise_error(FrozenError, "can't modify frozen Array: []")
diff --git a/spec/ruby/language/def_spec.rb b/spec/ruby/language/def_spec.rb
index 296d4787d0..5cc36d61f0 100644
--- a/spec/ruby/language/def_spec.rb
+++ b/spec/ruby/language/def_spec.rb
@@ -97,7 +97,8 @@ describe "An instance method" do
def foo; end
end
}.should raise_error(FrozenError) { |e|
- e.message.should == "can't modify frozen module: #{e.receiver}"
+ msg_class = RUBY_VERSION >= "4" ? "Module" : "module"
+ e.message.should == "can't modify frozen #{msg_class}: #{e.receiver}"
}
-> {
@@ -106,7 +107,8 @@ describe "An instance method" do
def foo; end
end
}.should raise_error(FrozenError){ |e|
- e.message.should == "can't modify frozen class: #{e.receiver}"
+ msg_class = RUBY_VERSION >= "4" ? "Class" : "class"
+ e.message.should == "can't modify frozen #{msg_class}: #{e.receiver}"
}
end
end
@@ -283,7 +285,8 @@ describe "A singleton method definition" do
it "raises FrozenError with the correct class name" do
obj = Object.new
obj.freeze
- -> { def obj.foo; end }.should raise_error(FrozenError, "can't modify frozen object: #{obj}")
+ msg_class = RUBY_VERSION >= "4" ? "Object" : "object"
+ -> { def obj.foo; end }.should raise_error(FrozenError, "can't modify frozen #{msg_class}: #{obj}")
obj = Object.new
c = obj.singleton_class