digitalmars.D.bugs - Interaction between std.stdio and std.stream...
- Peter Arnt (27/27) Oct 12 2012 I don't know if this has been seen before, but here goes:
- Simen Kjaeraas (17/39) Oct 14 2012 This is a newsgroup for automatic messages from Bugzilla. For help,
I don't know if this has been seen before, but here goes: There appears to be an interaction between std.stdio and std.stream such that an error is generated when a File object is created. Here is a simplified example of what I've been experiencing: 1 import std.stdio; 2 import std.stream; 3 4 void main() 5 { 6 auto f = File( "foo.bar", "w" ); 7 } I have compiled the above on both Ubuntu Linux 64-bit and Windows 64-bit systems and I get a similar error message from DMD. here is the error: $ dmd test.d test.d(6): Error: std.stdio.File at /usr/include/dmd/phobos/std/stdio.d(258) conflicts with std.stream.File at /usr/include/dmd/phobos/std/stream.d(1820) $ When I remove the import of std.stream, the compiler runs fine with no errors generated. Again, this is a simplified example. My original project utilized features contained in both stdio and stream libraries. Any help or direction on this would be greatly appreciated. Best Regards, Pete
Oct 12 2012
On 2012-49-12 18:10, Peter Arnt <peter_arnt yahoo.com> wrote:I don't know if this has been seen before, but here goes: There appears to be an interaction between std.stdio and std.stream such that an error is generated when a File object is created. Here is a simplified example of what I've been experiencing: 1 import std.stdio; 2 import std.stream; 3 4 void main() 5 { 6 auto f = File( "foo.bar", "w" ); 7 } I have compiled the above on both Ubuntu Linux 64-bit and Windows 64-bit systems and I get a similar error message from DMD. here is the error: $ dmd test.d test.d(6): Error: std.stdio.File at /usr/include/dmd/phobos/std/stdio.d(258) conflicts with std.stream.File at /usr/include/dmd/phobos/std/stream.d(1820) $ When I remove the import of std.stream, the compiler runs fine with no errors generated. Again, this is a simplified example. My original project utilized features contained in both stdio and stream libraries. Any help or direction on this would be greatly appreciated.This is a newsgroup for automatic messages from Bugzilla. For help, please try digitalmars.D.learn instead. As for your specific problem, this is not a bug. Both std.stream and std.stdio define a symbol by that name, and all the better for a compile-time error to occur than it randomly choose one of them. One could argue this should be en enhancement. The solution to your problem is to specify which File you intend to use: import std.stdio : File; // Either here (will not import other symbols) import std.stream; alias std.stdio.File File; // Or here. void main( ) { auto f = std.stdio.File( "foo.bar", "w" ); // Or here. } -- Simen
Oct 14 2012