Project

General

Profile

Actions

Bug #18771

closed

IO.foreach/.readlines ignores the 4th positional argument

Added by andrykonchin (Andrew Konchin) almost 2 years ago. Updated almost 2 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:108503]

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.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0