diff options
| author | Jeremy Evans <code@jeremyevans.net> | 2025-11-22 19:58:43 -0800 |
|---|---|---|
| committer | Jeremy Evans <code@jeremyevans.net> | 2025-12-10 07:35:50 +0900 |
| commit | e436dba9fee4c75104212ad0fd16ab7f753985c4 (patch) | |
| tree | 9b95734630cf5e0517604acdda4d0405a6b14518 /spec | |
| parent | 76fb0d244b95a23116bfe72bb2422395c3a76477 (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.rb | 4 | ||||
| -rw-r--r-- | spec/ruby/language/def_spec.rb | 9 |
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 |
