From: naruse@... Date: 2017-03-11T17:51:17+00:00 Subject: [ruby-core:80035] [Ruby trunk Bug#13145] Symbol#clone doesn't work correctly Issue #13145 has been updated by Yui NARUSE. Backport changed from 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ruby_2_4 r57869 merged revision(s) 57407. ---------------------------------------- Bug #13145: Symbol#clone doesn't work correctly https://bugs.ruby-lang.org/issues/13145#change-63458 * Author: Tatsuhiro Aoshima * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16] * Backport: 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ---------------------------------------- Ruby 2.4.0 has a bug that `Symbol` converted from `String` at first cannot be cloned: ~~~ ruby user@mypc ~$ irb irb(main):001:0> :abc.clone # When :abc has not been created from String (e.g. 'abc'.to_s.to_sym), clone will work. => :abc irb(main):002:0> 'abc'.to_s.to_sym => :abc irb(main):003:0> :abc.clone # This clone will also work. => :abc irb(main):004:0> 'abcd'.to_s.to_sym => :abcd irb(main):005:0> :abcd.clone # This clone WON'T WORK!? TypeError: allocator undefined for Symbol from (irb):5:in `clone' from (irb):5 from /usr/local/bin/irb:11:in `
' irb(main):006:0> ~~~ As written in Ruby 2.4.0 documentation (e.g. https://docs.ruby-lang.org/ja/latest/method/Object/i/clone.html), Symbol#clone must return itself. Currently, I define Symbol#clone as the following in order to fix this bug: ~~~ ruby class Symbol def clone self end end ~~~ I think something has gone wrong ... -- https://bugs.ruby-lang.org/ Unsubscribe: