www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - toString doesn't compile with -dip1000 switch

reply wjoe <invalid example.com> writes:
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
}



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?
Aug 01 2022
parent reply Kagamin <spam here.lot> writes:
Bar.toString is typed ` system`.
Aug 01 2022
parent reply wjoe <invalid example.com> writes:
On Monday, 1 August 2022 at 13:09:01 UTC, Kagamin wrote:
 Bar.toString is typed ` system`.
Even if I'd declare everything safe: at module scope?
Aug 01 2022
parent wjoe <invalid example.com> writes:
On Monday, 1 August 2022 at 17:07:43 UTC, wjoe wrote:
 On Monday, 1 August 2022 at 13:09:01 UTC, Kagamin wrote:
 Bar.toString is typed ` system`.
Even if I'd declare everything safe: at module scope?
I wrote that on my phone and it got a bit messy... ``` D module x; safe: 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) {} } unittest { import std.conv:to; Foo!() foo; foo.to!string; Bar bar; bar.to!string; // 25 } ```
Aug 01 2022