From bbb088234395efda23540d30ab5d1cb40f220d82 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 12 Dec 2017 18:41:18 +0900 Subject: Modifying frozen objects will raise `FrozenError`. `FrozenError` is a subclass of `RuntimeError` which used to be raised. [Ruby2.5] --- mrblib/10error.rb | 3 +++ mrblib/string.rb | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'mrblib') diff --git a/mrblib/10error.rb b/mrblib/10error.rb index 22a8d1ad7..0d9f38d58 100644 --- a/mrblib/10error.rb +++ b/mrblib/10error.rb @@ -51,6 +51,9 @@ end class NotImplementedError < ScriptError end +class FrozenError < RuntimeError +end + class StopIteration < IndexError attr_accessor :result end diff --git a/mrblib/string.rb b/mrblib/string.rb index 4c6114ecb..ee98cfa0c 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -96,7 +96,7 @@ class String # # ISO 15.2.10.5.19 def gsub!(*args, &block) - raise RuntimeError, "can't modify frozen String" if frozen? + raise FrozenError, "can't modify frozen String" if frozen? return to_enum(:gsub!, *args) if args.length == 1 && !block str = self.gsub(*args, &block) return nil if str == self @@ -159,7 +159,7 @@ class String # # ISO 15.2.10.5.37 def sub!(*args, &block) - raise RuntimeError, "can't modify frozen String" if frozen? + raise FrozenError, "can't modify frozen String" if frozen? str = self.sub(*args, &block) return nil if str == self self.replace(str) -- cgit v1.2.3