diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-28 12:18:17 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-02-19 15:46:26 +0900 |
commit | f0b815dc670b61eba1daaa67a8613ac431d32b16 (patch) | |
tree | bd32191e8fdfb34701afce748c5d1ed8f1e6347a | |
parent | 90d082e374abb2f76075ec143b255e3a53157b41 (diff) | |
download | ruby-f0b815dc670b61eba1daaa67a8613ac431d32b16.tar.gz |
`Proc` made by `Symbol#to_proc` should be a lambda [Bug #16260]
-rw-r--r-- | NEWS.md | 8 | ||||
-rw-r--r-- | proc.c | 1 | ||||
-rw-r--r-- | spec/ruby/core/proc/shared/to_s.rb | 2 |
3 files changed, 10 insertions, 1 deletions
@@ -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 @@ -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 @@ describe :proc_to_s, shared: true do 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:0x\h+\(&:foobar\)>$/ + proc.send(@method).should.include?('(&:foobar)') end it "has a binary encoding" do |