toString doesn't compile with -dip1000 switch

wjoe invalid at example.com
Mon Aug 1 09:57:43 UTC 2022


struct Foo()
{
   import std.format: FormatSpec;
   const void toString(
     scope void delegate(const(char)[]) @safe sink,
     FormatSpec!char fmt)
   {}
}

struct Bar
{
   import std.format: FormatSpec;
   const void toString(
     scope void delegate(const(char)[]) @safe sink,
     FormatSpec!char fmt)
   {}
}

@safe unittest {
   import std.conv:to;

   Foo!() foo; foo.to!string;
   Bar bar; bar.to!string; // 25
}

# dmd d.d -dip1000 -unittest -main

d.d(25) Error: @safe function d.__unittest_121_C7 cannot call 
@system function std.conv.to!string.to!(Bar).to
/usr/lib/dmd/2.099/import/std/conv.d(221): std.conv.to!string.to! 
(Bar).to is declared here


why is that?



More information about the Digitalmars-d-learn mailing list