summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2019-09-08 11:53:27 +0200
committerBenoit Daloze <eregontp@gmail.com>2019-09-26 10:23:02 +0200
commit6ffc045a817fbdf04a6945d3c260b55b0fa1fd1e (patch)
treee830df0ad8e9d5ad4413d1008115699b703e215b /spec
parent4a4c5028258e53f3395af29655a66bcef796fd73 (diff)
[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]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2437
Diffstat (limited to 'spec')
-rw-r--r--spec/ruby/core/symbol/shared/id2name.rb17
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