From f0b815dc670b61eba1daaa67a8613ac431d32b16 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 28 Nov 2019 12:18:17 +0900 Subject: [PATCH] `Proc` made by `Symbol#to_proc` should be a lambda [Bug #16260] --- NEWS.md | 8 ++++++++ proc.c | 1 + spec/ruby/core/proc/shared/to_s.rb | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 1d5bd6adb8..203fa08f78 100644 --- a/NEWS.md +++ b/NEWS.md @@ -34,6 +34,13 @@ sufficient information, see the ChangeLog file or Redmine * Hash#transform_keys now accepts a hash that maps keys to new keys. [[Feature #16274]] +* Symbol + + * Modified method + + * Symbol#to_proc now returns a lambda Proc. + [[Feature #16260]] + ## Stdlib updates (outstanding ones only) * Net::HTTP @@ -71,6 +78,7 @@ sufficient information, see the ChangeLog file or Redmine [Feature #8948]: https://bugs.ruby-lang.org/issues/8948 [Feature #15575]: https://bugs.ruby-lang.org/issues/15575 [Feature #16131]: https://bugs.ruby-lang.org/issues/16131 +[Feature #16260]: https://bugs.ruby-lang.org/issues/16260 [Feature #16274]: https://bugs.ruby-lang.org/issues/16274 [Feature #16377]: https://bugs.ruby-lang.org/issues/16377 [Feature #16555]: https://bugs.ruby-lang.org/issues/16555 diff --git a/proc.c b/proc.c index 83ec61d0f5..e0cba7109b 100644 --- a/proc.c +++ b/proc.c @@ -697,6 +697,7 @@ sym_proc_new(VALUE klass, VALUE sym) GetProcPtr(procval, proc); vm_block_type_set(&proc->block, block_type_symbol); + proc->is_lambda = TRUE; RB_OBJ_WRITE(procval, &proc->block.as.symbol, sym); return procval; } diff --git a/spec/ruby/core/proc/shared/to_s.rb b/spec/ruby/core/proc/shared/to_s.rb index 8b9c83927f..7edd11b1e1 100644 --- a/spec/ruby/core/proc/shared/to_s.rb +++ b/spec/ruby/core/proc/shared/to_s.rb @@ -46,7 +46,7 @@ def hello; end describe "for a proc created with Symbol#to_proc" do it "returns a description including '(&:symbol)'" do proc = :foobar.to_proc - proc.send(@method).should =~ /^#$/ + proc.send(@method).should.include?('(&:foobar)') end it "has a binary encoding" do -- GitLab