define_method is not setting captured variables as parameters in 1.8 mode
-------------------------------------------------------------------------
Key: JRUBY-5379
URL: http://jira.codehaus.org/browse/JRUBY-5379
Project: JRuby
Issue Type: Bug
Components: Compiler, Interpreter
Affects Versions: JRuby 1.6RC1
Reporter: Thomas E Enebo
Assignee: Thomas E Enebo
{noformat}
class Base
def meth(a, b)
end
end
class Derived < Base
d = 1
define_method(:meth) do |a, d|
puts "d before super #{d}"
super
end
define_method(:check) do
puts d
end
end
e = Derived.new
e.check
e.meth(1, 2)
e.check
{noformat}
In this snippet we should print 1, d before super 2, 2 but we print 1, d before
super 2, 1. We are not actually setting the captured value. 1.9 mode does not
allow captured variables as parms so we this is only a 1.8 issue.
Interestingly enough the solution for JRUBY-5303 will resolve this since the
plan for that bug is to have StaticScope hold parameter locations (location is
index+depth combo) in an array. {g,s}ArgValue* on Dynamic scope will assign
based on those locations. Magically, it should just work.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email