From: thijs@... Date: 2015-04-22T10:04:02+00:00 Subject: [ruby-core:68961] [Ruby trunk - Bug #11086] [Open] Symbol#instance_eval gives 'TypeError: can't define singleton' when coerced with String#to_sym Issue #11086 has been reported by Thijs Wouters. ---------------------------------------- Bug #11086: Symbol#instance_eval gives 'TypeError: can't define singleton' when coerced with String#to_sym https://bugs.ruby-lang.org/issues/11086 * 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: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- 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. -- https://bugs.ruby-lang.org/