Issue #11086 has been updated by Tomoyuki Chikanaga.

Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE

Backported into `ruby_2_2` branch at r50561.

----------------------------------------
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-52502

* Author: Thijs Wouters
* Status: Closed
* 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: DONE
----------------------------------------
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/