From 182a408c2c4113eb316c2a87e35880144afb4498 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Wed, 14 Aug 2019 16:25:15 +0900 Subject: [PATCH] change Proc#to_s format ('@...' -> ' ...') (#2362) Now Proc#to_s returns "#". However, it is convenient to select a file name by (double-)clicking on some terminals by separating ' ' instead of '@' like "#" [Feature #16101] --- lib/rubygems/installer.rb | 2 +- proc.c | 2 +- spec/ruby/core/proc/shared/to_s.rb | 8 ++++---- test/ruby/test_proc.rb | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index b230ce7bed..554cfc4509 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -370,7 +370,7 @@ class Gem::Installer if hook.call(self) == false FileUtils.rm_rf gem_dir - location = " at #{$1}" if hook.inspect =~ /@(.*:\d+)/ + location = " at #{$1}" if hook.inspect =~ / (.*:\d+)/ message = "post-build hook#{location} failed for #{spec.full_name}" raise Gem::InstallError, message diff --git a/proc.c b/proc.c index 5957cc3c7b..f03d8683b6 100644 --- a/proc.c +++ b/proc.c @@ -1310,7 +1310,7 @@ rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_i case block_type_iseq: { const rb_iseq_t *iseq = rb_iseq_check(block->as.captured.code.iseq); - rb_str_catf(str, "%p@%"PRIsVALUE":%d", (void *)self, + rb_str_catf(str, "%p %"PRIsVALUE":%d", (void *)self, rb_iseq_path(iseq), FIX2INT(iseq->body->location.first_lineno)); } diff --git a/spec/ruby/core/proc/shared/to_s.rb b/spec/ruby/core/proc/shared/to_s.rb index a4d1d5d630..050feb7b1c 100644 --- a/spec/ruby/core/proc/shared/to_s.rb +++ b/spec/ruby/core/proc/shared/to_s.rb @@ -1,7 +1,7 @@ describe :proc_to_s, shared: true do describe "for a proc created with Proc.new" do it "returns a description optionally including file and line number" do - Proc.new { "hello" }.send(@method).should =~ /^#$/ + Proc.new { "hello" }.send(@method).should =~ /^#$/ end it "has a binary encoding" do @@ -11,7 +11,7 @@ describe :proc_to_s, shared: true do describe "for a proc created with lambda" do it "returns a description including '(lambda)' and optionally including file and line number" do - -> { "hello" }.send(@method).should =~ /^#$/ + -> { "hello" }.send(@method).should =~ /^#$/ end it "has a binary encoding" do @@ -21,7 +21,7 @@ describe :proc_to_s, shared: true do describe "for a proc created with proc" do it "returns a description optionally including file and line number" do - proc { "hello" }.send(@method).should =~ /^#$/ + proc { "hello" }.send(@method).should =~ /^#$/ end it "has a binary encoding" do @@ -32,7 +32,7 @@ describe :proc_to_s, shared: true do describe "for a proc created with UnboundMethod#to_proc" do it "returns a description including '(lambda)' and optionally including file and line number" do def hello; end - method("hello").to_proc.send(@method).should =~ /^#$/ + method("hello").to_proc.send(@method).should =~ /^#$/ end it "has a binary encoding" do diff --git a/test/ruby/test_proc.rb b/test/ruby/test_proc.rb index 0e9c6e0b17..fbd3a6c68a 100644 --- a/test/ruby/test_proc.rb +++ b/test/ruby/test_proc.rb @@ -1188,8 +1188,8 @@ class TestProc < Test::Unit::TestCase end def test_to_s - assert_match(/^#$/, proc {}.to_s) - assert_match(/^#$/, lambda {}.to_s) + assert_match(/^#$/, proc {}.to_s) + assert_match(/^#$/, lambda {}.to_s) assert_match(/^#$/, method(:p).to_proc.to_s) x = proc {} x.taint