From: lucasbuchala@... Date: 2016-12-19T13:20:31+00:00 Subject: [ruby-core:78728] [Ruby trunk Bug#13051] Object created with ARGF.class.new fails to update .lineno in .each Issue #13051 has been reported by Lucas Buchala. ---------------------------------------- Bug #13051: Object created with ARGF.class.new fails to update .lineno in .each https://bugs.ruby-lang.org/issues/13051 * Author: Lucas Buchala * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.0rc1 (2016-12-12 trunk 57064) [i686-linux] * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- I don't know if this way of creating ARGF-like objects is supported or not. I just noticed that it didn't update the `.lineno` when used in `.each`. Consider the example input file: ~~~ $ cat file1 foo bar baz ~~~ The following code: ~~~ruby f = ARGF.class.new('file1') f.each do |line| puts "#{f.lineno} #{line}" end ~~~ Outputs this: ~~~ 0 foo 0 bar 0 baz ~~~ I was expecting this: ~~~ 1 foo 2 bar 3 baz ~~~ If, instead of using `.each`, I read it in 2 steps with: `while line = f.gets; puts f.lineno; ...`, then it works, the line numbers are updated. -- https://bugs.ruby-lang.org/ Unsubscribe: