digitalmars.D.learn - toString doesn't compile with -dip1000 switch
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
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
On Monday, 1 August 2022 at 17:07:43 UTC, wjoe wrote:On Monday, 1 August 2022 at 13:09:01 UTC, Kagamin wrote: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 } ```Bar.toString is typed ` system`.Even if I'd declare everything safe: at module scope?
Aug 01 2022