[ruby-core:68017] [ruby-trunk - Feature #10773] [Rejected] nested module should work in instance_eval

From: shugo@...
Date: 2015-02-05 04:13:33 UTC
List: ruby-core #68017
Issue #10773 has been updated by Shugo Maeda.

Status changed from Open to Rejected

It's an expected behavior that instance_eval doesn't affect constant lookup.
Constant lookup is designted to be as static as possible.


----------------------------------------
Feature #10773: nested module should work in instance_eval
https://bugs.ruby-lang.org/issues/10773#change-51404

* Author: roro co
* Status: Rejected
* Priority: Normal
* Assignee: 
----------------------------------------
see my code:

~~~
module M
  module M2

  end
end

class C
  include M

  def ivk_m2(*args, &blk)
    M2
  end
end

C.new.ivk_m2 # work
C.new.instance_eval do
  meth_in_m # work
  M2 # not work
end

~~~

and output

~~~
Uncaught exception: uninitialized constant M2
	/home/roroco/Dropbox/rbs/ro_btc/exe.rb:22:in `block in <top (required)>'
	/home/roroco/Dropbox/rbs/ro_btc/exe.rb:20:in `instance_eval'
	/home/roroco/Dropbox/rbs/ro_btc/exe.rb:20:in `<top (required)>'
~~~

in above code,  i think ```C.new.instance { M2 }``` should invoke M::M2 in syntax since it's in "instance block" or "main"




-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next