anyway to debug nogc code with writeln?

Ali Çehreli acehreli at yahoo.com
Sat Sep 1 22:38:46 UTC 2018


You can strip off any attribute with SetFunctionAttributes:

import std.stdio;

// Adapted from std.traits.SetFunctionAttributes documentation
import std.traits;
auto assumeNoGC(T)(T t)
     if (isFunctionPointer!T || isDelegate!T)
{
     enum attrs = functionAttributes!T | FunctionAttribute.nogc;
     return cast(SetFunctionAttributes!(T, functionLinkage!T, attrs)) t;
}

void f(T)(auto ref T) {
     writeln("yo");
}

@nogc void main() {
     assumeNoGC(() => f(3));
     // or
     assumeNoGC( { writeln("yo"); });
}

Ali



More information about the Digitalmars-d-learn mailing list