[ruby-trunk - Bug #6054][Open] IO.foreach を Enumerator 化したときキーワード引数が無視される

Issue #6054 has been reported by _ wanabe.


Bug #6054: IO.foreach を Enumerator 化したときキーワード引数が無視される

Author: _ wanabe
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]

http://toro.2ch.net/test/read.cgi/tech/1324826777/666-675 で指摘があったのですが
末尾に示すように、IO.foreach にブロックを渡さず Enumerator 化したときキーワード引数が無視されます。
上の書き込みによると
“先にハッシュオプション取り除いてからEnumeratorを生成しちゃってるのでハッシュオプションがEnumeratorには反映されない”
とのことでした。
rb_io_s_foreach 中の RETURN_ENUMERATOR を rb_scan_args
より先にするべきではないか、ということのようです。

$ cat foo.rb
p IO.foreach(FILE,mode:“a”).next
IO.foreach(FILE,mode:“a”) {|l| p l }

$ ruby -v foo.rb
ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]
“p IO.foreach(FILE,mode:"a").next\n”
foo.rb:2:in foreach': not opened for reading (IOError) from foo.rb:2:in

Issue #6054 has been updated by Nobuyoshi N…

% Done changed from 100 to 50
ruby -v set to ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]


Bug #6054: IO.foreach を Enumerator 化したときキーワード引数が無視される

Author: _ wanabe
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]

http://toro.2ch.net/test/read.cgi/tech/1324826777/666-675 で指摘があったのですが
末尾に示すように、IO.foreach にブロックを渡さず Enumerator 化したときキーワード引数が無視されます。
上の書き込みによると
“先にハッシュオプション取り除いてからEnumeratorを生成しちゃってるのでハッシュオプションがEnumeratorには反映されない”
とのことでした。
rb_io_s_foreach 中の RETURN_ENUMERATOR を rb_scan_args
より先にするべきではないか、ということのようです。

$ cat foo.rb
p IO.foreach(FILE,mode:“a”).next
IO.foreach(FILE,mode:“a”) {|l| p l }

$ ruby -v foo.rb
ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]
“p IO.foreach(FILE,mode:"a").next\n”
foo.rb:2:in foreach': not opened for reading (IOError) from foo.rb:2:in

Issue #6054 has been updated by Nobuyoshi N…

Status changed from Open to Closed
% Done changed from 50 to 100

Re-fixed at r34736 for [ruby-dev:31525].

Bug #6054: IO.foreach を Enumerator 化したときキーワード引数が無視される

Author: _ wanabe
Status: Closed
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]

http://toro.2ch.net/test/read.cgi/tech/1324826777/666-675 で指摘があったのですが
末尾に示すように、IO.foreach にブロックを渡さず Enumerator 化したときキーワード引数が無視されます。
上の書き込みによると
“先にハッシュオプション取り除いてからEnumeratorを生成しちゃってるのでハッシュオプションがEnumeratorには反映されない”
とのことでした。
rb_io_s_foreach 中の RETURN_ENUMERATOR を rb_scan_args
より先にするべきではないか、ということのようです。

$ cat foo.rb
p IO.foreach(FILE,mode:“a”).next
IO.foreach(FILE,mode:“a”) {|l| p l }

$ ruby -v foo.rb
ruby 2.0.0dev (2012-02-21 trunk 34711) [i686-linux]
“p IO.foreach(FILE,mode:"a").next\n”
foo.rb:2:in foreach': not opened for reading (IOError) from foo.rb:2:in