Project

General

Profile

Backport #3200

Updated by jeremyevans0 (Jeremy Evans) over 5 years ago

=begin 
  
  gsub! does not raise an error on a frozen string unless a change is actually made. e.g. 
 
  >> s = "a".freeze 
  => "a" 
  >> s.gsub!(/b/,'') 
  => nil 
 
  But this is inconsistent with other mutating methods on frozen strings, e.g. 
 
  >> s.squeeze! 
  TypeError: can't modify frozen string 
 	 from (irb):3:in `squeeze!' 
 	 from (irb):3 
 	 from :0 
  >> s.tr!('b','c') 
  TypeError: can't modify frozen string 
 	 from (irb):4:in `tr!' 
 	 from (irb):4 
 	 from :0 
 
  Not sure if this unexpected behaviour is "bug" or "feature". The ri documentation of String#gsub! doesn't mention this anomaly. 
 
  Tested with ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] from Ubuntu Karmic 
 
 =end 
 

Back