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 `<main>'
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 `<main>'
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/