[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>
I'll try to be brief so we can discuss all this. tl;dr: RubySpec is
19 messages
2015/01/05
[#67353] Re: Future of test suites for Ruby
— Tanaka Akira <akr@...>
2015/01/05
2015-01-06 7:18 GMT+09:00 Charles Oliver Nutter <[email protected]>:
[#67444] [ruby-trunk - Feature #10718] [Open] IO#close should not raise IOError on closed IO objects. — akr@...
Issue #10718 has been reported by Akira Tanaka.
3 messages
2015/01/09
[#67689] Keyword Arguments — Anthony Crumley <anthony.crumley@...>
Please forgive my ignorance as I am new to MRI development and am still
5 messages
2015/01/20
[#67733] [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5 — normalperson@...
Issue #10761 has been updated by Eric Wong.
4 messages
2015/01/21
[#67736] Re: [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5
— Eric Wong <normalperson@...>
2015/01/22
[email protected] wrote:
[#67772] Preventing Redundant Email Messages — Jeremy Evans <code@...>
For a long time, I've wondered why I sometimes receive redundant email
5 messages
2015/01/23
[ruby-core:67439] [ruby-trunk - Bug #10708] In a function call, double splat of an empty hash still calls the function with an argument
From:
code@...
Date:
2015-01-08 21:11:48 UTC
List:
ruby-core #67439
Issue #10708 has been updated by Kolja Kube.
Just to inform everyone, this issue stems from [this post on Stack Overflow](http://stackoverflow.com/questions/27821422/how-can-i-collapse-double-splat-arguments-into-nothing).
Also, I have now idea how the ruby parser works, so if increased parsing complexity is the reason for the discussed behavior, I'm happy to concede my point.
Why I think the current behavior is weird, take these forwarders:
def call_args(method, *args); send(method, *args); end
def call_kwargs(method, **opts); send(method, **opts); end
This obviously works:
def one_arg(arg); end
def one_kwarg(opt:); end
call_args(:one_arg, 0) # fine
call_kwargs(:one_kwargs, opt: 0) # also fine
But here the behavior differs:
def zero_args(); end
def zero_kwargs(); end
call_args(:zero_args) # fine
call_kwargs(:zero_kwargs) # error
Now, this is not a problem per se, since the single-splat syntax also permits fowarding keyword arguments. But this simply tripped me up, and since one of Ruby's principles is the principle of least surprise, I look forward to hearing your opinions.
----------------------------------------
Bug #10708: In a function call, double splat of an empty hash still calls the function with an argument
https://bugs.ruby-lang.org/issues/10708#change-50868
* Author: Damien Robert
* Status: Open
* Priority: Normal
* Assignee:
* Category:
* Target version:
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Consider this:
def foo; end
foo(*[]) #Splatting an empty list is ok
foo(**{}) #Double splatting an empty hash is like calling foo({}) which gives an error
This is annoying in a function that is a wrapper around another function and just process some keywords:
def wrapper(*args, keyword: true, **others)
puts keyword
wrappee(*args,**others) #here this code will fail if others is empty
end
--
https://bugs.ruby-lang.org/