From 6ffc045a817fbdf04a6945d3c260b55b0fa1fd1e Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Sun, 8 Sep 2019 11:53:27 +0200 Subject: [EXPERIMENTAL] Make Symbol#to_s return a frozen String * Always the same frozen String for a given Symbol. * Avoids extra allocations whenever calling Symbol#to_s. * See [Feature #16150] --- spec/ruby/core/symbol/shared/id2name.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'spec') diff --git a/spec/ruby/core/symbol/shared/id2name.rb b/spec/ruby/core/symbol/shared/id2name.rb index 47f97bd332..a0e190a680 100644 --- a/spec/ruby/core/symbol/shared/id2name.rb +++ b/spec/ruby/core/symbol/shared/id2name.rb @@ -6,4 +6,21 @@ describe :symbol_id2name, shared: true do :@ruby.send(@method).should == "@ruby" :@@ruby.send(@method).should == "@@ruby" end + + ruby_version_is "2.7" do + it "returns a frozen String" do + :my_symbol.to_s.frozen?.should == true + :"dynamic symbol #{6 * 7}".to_s.frozen?.should == true + end + + it "always returns the same String for a given Symbol" do + s1 = :my_symbol.to_s + s2 = :my_symbol.to_s + s1.should equal(s2) + + s1 = :"dynamic symbol #{6 * 7}".to_s + s2 = :"dynamic symbol #{2 * 3 * 7}".to_s + s1.should equal(s2) + end + end end -- cgit v1.2.3