From 9d0866c7d7b9cbe36a851744a37806e747e0e7a8 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 26 Sep 2019 10:41:43 +0200 Subject: [EXPERIMENTAL] Make Module#name return a frozen String * Always the same frozen String for a given Module or Class. * Avoids extra allocations whenever calling Module#name. * See [Feature #16150] --- spec/ruby/core/module/name_spec.rb | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'spec/ruby/core') diff --git a/spec/ruby/core/module/name_spec.rb b/spec/ruby/core/module/name_spec.rb index d64684319c..36a91f5be5 100644 --- a/spec/ruby/core/module/name_spec.rb +++ b/spec/ruby/core/module/name_spec.rb @@ -102,13 +102,27 @@ describe "Module#name" do m::N.name.should == "ModuleSpecs::Anonymous::E::N" end - it "returns a mutable string" do - ModuleSpecs.name.frozen?.should be_false + ruby_version_is ""..."2.7" do + it "returns a mutable string" do + ModuleSpecs.name.frozen?.should be_false + end + + it "returns a mutable string that when mutated does not modify the original module name" do + ModuleSpecs.name << "foo" + + ModuleSpecs.name.should == "ModuleSpecs" + end end - it "returns a mutable string that when mutated does not modify the original module name" do - ModuleSpecs.name << "foo" + ruby_version_is "2.7" do + it "returns a frozen String" do + ModuleSpecs.name.frozen?.should == true + end - ModuleSpecs.name.should == "ModuleSpecs" + it "always returns the same String for a given Module" do + s1 = ModuleSpecs.name + s2 = ModuleSpecs.name + s1.should equal(s2) + end end end -- cgit v1.2.3