Re: [jruby-user] JRuby head: splat (i.e., **args) method params?
Thomas E Enebo <[email protected]>
| Newsgroups | gmane.comp.lang.jruby.user |
|---|---|
| Message-ID | <CAL5zZVk11CFBEFGR_S5CqN7sytPemZ8p0t36Dm8ABF3br_UT-A@mail.gmail.com> |
1 week is most likely but this is easily worked around by just changing to an explicit super (explicitly pass the args on) for the time being. -Tom On Wed, Sep 3, 2014 at 10:23 AM, Josep Blanquer <[email protected]> wrote: > Thanks Thomas, > > Do you have a ballpark sense as to how long something like this might > take to be solved? 1 week? 1 month? 6 months? > > Josep M. > > > On Wed, Sep 3, 2014 at 7:02 AM, Thomas E Enebo <[email protected]> > wrote: > >> Ah yeah. We are not delivering keyword arguments to zsuper. Thanks for >> the simple reproduction. I made an issue for it: >> >> https://github.com/jruby/jruby/issues/1943 >> >> -Tom >> >> >> >> On Tue, Sep 2, 2014 at 11:45 PM, Josep Blanquer <[email protected]> >> wrote: >> >>> Aha! intersting...yes I can...so it seems a consequence of the "super" >>> method. >>> Here you have a repro: >>> >>> ------------------------------------------------------------ >>> class Foo >>> def initialize(name, context,**opts) >>> p opts >>> end >>> end >>> >>> class Bar < Foo >>> def initialize(name, context, path: nil) >>> super >>> end >>> end >>> >>> Bar.new(1, 2) >>> Bar.new(1,2, path: "there") >>> ------------------------------------------------------------ >>> >>> bug:foo $ rvm 2.1 >>> bug:foo $ ruby /tmp/x.rb >>> {:path=>nil} >>> {:path=>"there"} >>> bug:foo $ rvm jruby-head >>> bug:foo $ ruby /tmp/x.rb >>> ArgumentError: wrong number of arguments (3 for 2) >>> initialize at /tmp/x.rb:9 >>> initialize at /tmp/x.rb:9 >>> (root) at /tmp/x.rb:13 >>> >>> while in MRI ruby both calls work (with and without the hash), in jruby >>> both fail with the arguments error. >>> So, something about the super call doesn't quite work as MRI does. >>> >>> Cheers, >>> >>> Josep M. >>> >>> >>> On Tue, Sep 2, 2014 at 3:50 PM, Thomas E Enebo <[email protected]> >>> wrote: >>> >>>> Can you give a more complete example. This works for me: >>>> >>>> class Foo >>>> def initialize(name, context,**opts) >>>> p opts >>>> end >>>> end >>>> >>>> Foo.new(1, 2, a: 1) >>>> >>>> ./bin/jruby -v snippets/kw15.rb >>>> jruby 9000.dev-SNAPSHOT (2.1.2p142) 2014-09-02 8771d02 Java HotSpot(TM) >>>> 64-Bit Server VM 24.60-b09 on 1.7.0_60-b19 [darwin-x86_64] >>>> /Users/enebo/work/jruby/lib/ruby/shared/rubygems/defaults/jruby.rb:92 >>>> warning: Ambiguous first argument; make sure. >>>> /Users/enebo/work/jruby/lib/ruby/shared/rubygems/defaults/jruby.rb:96 >>>> warning: shadowing outer local variable - dir >>>> {:a=>1} >>>> >>>> >>>> On Tue, Sep 2, 2014 at 4:52 PM, Josep Blanquer <[email protected] >>>> > wrote: >>>> >>>>> Hello, >>>>> >>>>> It seems that as of the latest head from today: >>>>> jruby 9000.dev-SNAPSHOT (2.1.2p142) 2014-09-02 8771d02 Java >>>>> HotSpot(TM) 64-Bit Server VM 24.0-b56 on 1.7.0_40-b43 [darwin-x86_64] >>>>> >>>>> The following 2.1 syntax is not implemented? >>>>> >>>>> ArgumentError: wrong number of arguments (3 for 2) >>>>> initialize at /...../file.rb:11 >>>>> >>>>> Where that line is: >>>>> >>>>> def initialize(name, context,**opts) >>>>> >>>>> >>>>> am I missing something to make that happen in the current codebase? or >>>>> is this a well know feature that still has to be implemented? >>>>> >>>>> If the latter is true: do you have any inkling as to when that could >>>>> be done? >>>>> >>>>> Thank you! >>>>> >>>>> Josep M. >>>>> >>>> >>>> >>>> >>>> -- >>>> blog: http://blog.enebo.com twitter: tom_enebo >>>> mail: [email protected] >>>> >>> >>> >> >> >> -- >> blog: http://blog.enebo.com twitter: tom_enebo >> mail: [email protected] >> > > -- blog: http://blog.enebo.com twitter: tom_enebo mail: [email protected]