This is because file_line_iterator has the constructor void create(function(:string)|void feed) but is unable to handle a void feed function. It can also be argued that the LineIterator in Stdio.File is ill-designed, as you need something like Stdio.stdin->LineIterator(Stdio.stdin->read_function(8192)); to get it to work. Perhaps instead something like
class LineIterator { inherit __builtin.file_line_iterator; void create(int|function(:string)|void arg) { if(!arg) arg = read_function(8192); else if(intp(arg)) arg = read_function(arg); else if(!functionp(arg)) Pike_error("Bad argument\n"); ::create(arg); } }
file_line_iterator still needs to be looked at in both 7.6 and 7.7. grubba?