From: nobu@... Date: 2015-04-23T02:31:31+00:00 Subject: [ruby-core:68967] [Ruby trunk - Bug #11086] Symbol#instance_eval gives 'TypeError: can't define singleton' when coerced with String#to_sym Issue #11086 has been updated by Nobuyoshi Nakada. Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- Bug #11086: Symbol#instance_eval gives 'TypeError: can't define singleton' when coerced with String#to_sym https://bugs.ruby-lang.org/issues/11086#change-52220 * Author: Thijs Wouters * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- When I coerce a String into a Symbol with String#to_sym, a call to Symbol#instance_eval fails with 'TypeError: can't define singleton'. If I first define the Symbol, it works as expected. Failure: ~~~ 2.2.1 :001 > "test_symbol".to_sym.instance_eval{true} TypeError: can't define singleton from (irb):1:in `instance_eval' from (irb):1 from /home/xxx/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `
' 2.2.1 :002 > :test_symbol.instance_eval{true} TypeError: can't define singleton from (irb):2:in `instance_eval' from (irb):2 from /home/xxx/.rvm/rubies/ruby-2.2.1/bin/irb:11:in `
' 2.2.1 :003 > exit ~~~ Other way around: ~~~ 2.2.1 :001 > :test_symbol.instance_eval{true} => true 2.2.1 :002 > "test_symbol".to_sym.instance_eval{true} => true 2.2.1 :003 > exit ~~~ This also fails in 2.2.0, but does not in 2.1.5. ---Files-------------------------------- test.patch (444 Bytes) -- https://bugs.ruby-lang.org/