Actions
Bug #18771
closedIO.foreach/.readlines ignores the 4th positional argument
Description
The IO.readlines
method has the following signature:
readlines(name, sep, limit [, getline_args, open_args]) → array
The last arguments getline_args
, open_args
are accepted as keyword arguments, so there are actually 3 positional arguments - name
, sep
, and limit
.
But if the method is called with any 4th positional argument - then it's just ignored. But I would expect an exception to be raised e.g. "ArgumentError: wrong number of arguments (given 4, expected 1..3)"
File.readlines('file.txt', "\n", 10)
=> ["abc\n", "\n", "def\n"]
File.readlines('file.txt', "\n", 10, {})
=> ["abc\n", "\n", "def\n"]
File.readlines('file.txt', "\n", 10, {chomp: true})
=> ["abc\n", "\n", "def\n"]
File.readlines('file.txt', "\n", 10, false)
=> ["abc\n", "\n", "def\n"]
File.readlines('file.txt', "\n", 10, nil)
=> ["abc\n", "\n", "def\n"]
It's relevant to the IO.foreach
method as well.
Expected behavior - an ArgumentError exception to be raised.
Updated by andrykonchin (Andrew Konchin) about 3 years ago
- Subject changed from IO.foreach/.readlines ignores the 4th positioned argument to IO.foreach/.readlines ignores the 4th positional argument
- Description updated (diff)
Updated by andrykonchin (Andrew Konchin) about 3 years ago
- Description updated (diff)
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
I've submitted a pull request to fix this: https://github.com/ruby/ruby/pull/5953
Updated by jeremyevans (Jeremy Evans) almost 3 years ago
- Status changed from Open to Closed
Applied in changeset git|27eb36596a65d6bca44b4420ca6526175bf1b431.
Stop ignoring 4th positional argument to IO.#{foreach,readlines}
Fixes [Bug #18771]
Actions
Like0
Like0Like0Like0Like0