From 2e551356a7a6e74ba07283e000ff16f5d1ea6506 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Wed, 7 Aug 2019 09:01:33 -0700 Subject: Make Kernel#{Pathname,BigDecimal,Complex} return argument if given correct type This is how Kernel#{Array,String,Float,Integer,Hash,Rational} work. BigDecimal and Complex instances are always frozen, so this should not cause backwards compatibility issues for those. Pathname instances are not frozen, so potentially this could cause backwards compatibility issues by not returning a new object. Based on a patch from Joshua Ballanco, some minor changes by me. Fixes [Bug #7522] --- test/pathname/test_pathname.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/pathname') diff --git a/test/pathname/test_pathname.rb b/test/pathname/test_pathname.rb index eaecc52475..af523f9f98 100644 --- a/test/pathname/test_pathname.rb +++ b/test/pathname/test_pathname.rb @@ -471,6 +471,12 @@ class TestPathname < Test::Unit::TestCase assert_raise(ArgumentError) { Pathname.new("a\0") } end + def test_global_constructor + p = Pathname.new('a') + assert_equal(p, Pathname('a')) + assert_same(p, Pathname(p)) + end + class AnotherStringLike # :nodoc: def initialize(s) @s = s end def to_str() @s end -- cgit v1.2.3