Actions
Bug #6838
closedclass_eval and instance_eval do not scope class names the same as direct code
Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11]
Backport:
Description
class X
def self.f()
puts "::X"
end
end
class Y
class X
def self.f()
puts "Y::X"
end
end
def self.c()
X.f()
end
end
Y.class_eval do
def self.k()
X.f()
end
end
Y.c
Y.class_eval { X.f() }
Y.k
====
Y.c outputs "Y::X"
Y.class_eval { X.f() } outputs "::X"
Y.k also outputs "::X"
Similar behaviour happens with instance_eval:
====
class X
def f()
puts "::X"
end
end
class Y
class X
def f()
puts "Y::X"
end
end
def c()
X.new.f()
end
end
Y.new.c
Y.new.instance_eval { X.new.f() }
====
My expectation is that class_eval and instance_eval should map class names the same as code written directly in the class, as they do with function names.
Actions
Like0
Like0Like0Like0