digitalmars.D.bugs - [Issue 2081] New: Foreach over Stream appears broken
- d-bugmail puremagic.com (32/32) May 08 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2081
- d-bugmail puremagic.com (11/11) May 08 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2081
- d-bugmail puremagic.com (18/18) May 08 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2081
- d-bugmail puremagic.com (8/8) May 08 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2081
- d-bugmail puremagic.com (9/15) May 08 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2081
- d-bugmail puremagic.com (13/13) Nov 24 2010 http://d.puremagic.com/issues/show_bug.cgi?id=2081
http://d.puremagic.com/issues/show_bug.cgi?id=2081 Summary: Foreach over Stream appears broken Product: D Version: 2.012 Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: bugzilla digitalmars.com ReportedBy: jlquinn optonline.net I'm trying to use the foreach idiom shown in the docs for InputStream, but the compiler rejects my code. The program is: import std.cstream; import std.stream; void test() { string file = "test"; Stream f = new BufferedFile(file); foreach (ulong line, string buf; f) { derr.writefln(buf); } } The compiler complains: dmd/bin/dmd junk2.d junk2.d(8): function std.stream.Stream.opApply (int delegate(ref char[] line)) does not match parameter types (int delegate(ref ulong __applyArg0, ref invariant(char)[] __applyArg1)) junk2.d(8): Error: cannot implicitly convert expression (__foreachbody15) of type int delegate(ref ulong __applyArg0, ref invariant(char)[] __applyArg1) to int delegate(ref ulong n, ref wchar[] line) --
May 08 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2081 shro8822 vandals.uidaho.edu changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement try this foreach (ref string buf; f) there isn't a opApply with an index value, But IMHO there should be (converting to feature request) --
May 08 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2081 jlquinn optonline.net changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|enhancement |normal The code becomes: foreach (ref string buf; f) { which the compiler still dislikes: lexicon.d(92): function std.stream.Stream.opApply (int delegate(ref char[] line)) does not match parameter types (int delegate(ref invariant(char)[] buf)) lexicon.d(92): Error: cannot implicitly convert expression (__foreachbody15) of type int delegate(ref invariant(char)[] buf) to int delegate(ref ulong n, ref wchar[] line) Changing back to a bug :-) BTW, why is "ref" needed? If so, the docs aren't clear about that and need to be updated. --
May 08 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2081 If it's a bug, than it's a bug in DMD. If it's related to phobos than it's a feature request because it's operating correctly, just not the way we want it to. I use D1.0 so I can't test it but try this foreach (ref char[] buf; f) { --
May 08 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2081If it's a bug, than it's a bug in DMD. If it's related to phobos than it's a feature request because it's operating correctly, just not the way we want it to.Well, the docs say it should work, so there is at least the bug that the docs don't align with the implementation, even if we accept the implementation as correct.I use D1.0 so I can't test it but try this foreach (ref char[] buf; f) {I expect that should work, but I'm trying to use string where I can. I tend to find string as a type more aesthetically pleasing to work with. --
May 08 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2081 Witold Baryluk <baryluk smp.if.uj.edu.pl> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |baryluk smp.if.uj.edu.pl 07:44:01 PST --- I just hit this bug. What is worse, example on page http://digitalmars.com/d/2.0/phobos/std_stream.html#opApply do not work exactly because of this bug! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 24 2010