digitalmars.D.bugs - Bug? Are wchar[] and dchar[] treated differently?
- Georg Wrede (43/43) Nov 17 2005 Fedora Core 4 Linux, I compile this:
- Regan Heath (15/58) Nov 17 2005 It appears there is no overload for dchar[] in std.stream, I see:
Fedora Core 4 Linux, I compile this: import std.stream; void main() { char[] c = "Saatana perkele"c; wchar[] w = "Saatana perkele"w; dchar[] d = "Saatana perkele"d; File of1 = new File; File of2 = new File; File of3 = new File; of1.create("/tmp/1.txt"); of2.create("/tmp/2.txt"); of3.create("/tmp/3.txt"); of1.write(c); of1.write(w); of1.write(d); // error line 19 of2.write(w); of2.write(d); // error line 22 of2.write(c); of3.write(d); // error line 25 of3.write(c); of3.write(w); of1.close(); of2.close(); of3.close(); } And I get the following compiler errors: $ dmd outtest2.d outtest2.d(19): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(19): cannot implicitly convert expression (d) of type dchar[] to wchar[] outtest2.d(22): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(22): cannot implicitly convert expression (d) of type dchar[] to wchar[] outtest2.d(25): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(25): cannot implicitly convert expression (d) of type dchar[] to wchar[] I would have expected complaints about maybe d and w, but not about d only. (And I would have wished no complaints at all, but that's not reasonable yet.)
Nov 17 2005
On Fri, 18 Nov 2005 08:51:41 +0200, Georg Wrede <georg nospam.org> wrote:Fedora Core 4 Linux, I compile this: import std.stream; void main() { char[] c = "Saatana perkele"c; wchar[] w = "Saatana perkele"w; dchar[] d = "Saatana perkele"d; File of1 = new File; File of2 = new File; File of3 = new File; of1.create("/tmp/1.txt"); of2.create("/tmp/2.txt"); of3.create("/tmp/3.txt"); of1.write(c); of1.write(w); of1.write(d); // error line 19 of2.write(w); of2.write(d); // error line 22 of2.write(c); of3.write(d); // error line 25 of3.write(c); of3.write(w); of1.close(); of2.close(); of3.close(); } And I get the following compiler errors: $ dmd outtest2.d outtest2.d(19): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(19): cannot implicitly convert expression (d) of type dchar[] to wchar[] outtest2.d(22): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(22): cannot implicitly convert expression (d) of type dchar[] to wchar[] outtest2.d(25): function std.stream.Stream.write (ubyte[]) does not match argument types (dchar[]) outtest2.d(25): cannot implicitly convert expression (d) of type dchar[] to wchar[] I would have expected complaints about maybe d and w, but not about d only. (And I would have wished no complaints at all, but that's not reasonable yet.)It appears there is no overload for dchar[] in std.stream, I see: // writes a string, together with its length void write(char[] s) { write(s.length); writeString(s); } // writes a Unicode string, together with its length void write(wchar[] s) { write(s.length); writeStringW(s); } but no write method for dchar[]. There is no writeStringD or writeLineD either. Regan
Nov 17 2005