xxxxxxxxxx
import std.stdio;
void main()
{
bugTest();
}
// It's from https://github.com/Kozzi11/experimental.xml/blob/master/source/std/experimental/xml/writer.d
void bugTest()
{
string dom = "XML DOM";
auto file = File("catalogue.xml", "w");
// It's OK
// auto textWriter = file.lockingTextWriter;
// textWriter.writerFor.write(dom);
// There's a bug
auto writer = writerFor(file.lockingTextWriter);
writer.write(dom);
file.close();
}
auto writerFor(OutRange)(auto ref OutRange outRange)
{
auto res = Writer!(OutRange)();
res.setSink(outRange);
return res;
}
struct Writer(OutRange)
{
private OutRange* output;
void setSink(ref OutRange output)
{
this.output = &output;
writeln("in setSink: ", this.output);
}
// void setSink(typeof(output) output)
// {
// this.output = output;
// }
void write(string s)
{
writeln("in write: ", output);
output.put(s);
}
}