You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Running jruby 9.1.5.0 (2.3.1) 2016-09-07 036ce39 OpenJDK 64-Bit Server VM 25.91-b14 on 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14 [linux-x86_64] on Linux maruchan 4.8.0-16-generic #17-Ubuntu SMP Thu Sep 22 22:48:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux.
ok I know the problem and I will describe it as the actual fix might take a little thought. We allocate lvars and kwargs using the same StaticScope storage. We depend on strings which represent the variable name. So we do not complain about 'a:' since opt arg 'a=' exists. This seemed safe since you cannot actually have a method like:
deffoo(a=1,a:)end
The parser realizes that you are trying to use the same name in two different ways which is ambiguous. What the current solution did not consider is that we need to know if a particular name is a kwarg or an ordinary arg. So there are many ways to skin this cat but it means some extra state somewhere. Most obvious thought would be a kwargs start at offset x field. Then if we find 'a' exists before that we know it is not a kwarg?
@ivoanjo I thought I had fixed all keyword argument bugs relating to methods (we have some other issues still with blocks) in our last point release so I was determined!
Environment
Running
jruby 9.1.5.0 (2.3.1) 2016-09-07 036ce39 OpenJDK 64-Bit Server VM 25.91-b14 on 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14 [linux-x86_64]
onLinux maruchan 4.8.0-16-generic #17-Ubuntu SMP Thu Sep 22 22:48:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
.Expected Behavior
Example code:
Output in MRI 2.3.1:
Actual Behavior
Output in JRuby (return from function)
The text was updated successfully, but these errors were encountered: