diff options
author | Benoit Daloze <eregontp@gmail.com> | 2019-09-08 11:53:27 +0200 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2019-09-26 10:23:02 +0200 |
commit | 6ffc045a817fbdf04a6945d3c260b55b0fa1fd1e (patch) | |
tree | e830df0ad8e9d5ad4413d1008115699b703e215b /spec/ruby | |
parent | 4a4c5028258e53f3395af29655a66bcef796fd73 (diff) | |
download | ruby-6ffc045a817fbdf04a6945d3c260b55b0fa1fd1e.tar.gz |
[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]
Diffstat (limited to 'spec/ruby')
-rw-r--r-- | spec/ruby/core/symbol/shared/id2name.rb | 17 |
1 files changed, 17 insertions, 0 deletions
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 |