On Tuesday, 19 July 2022 at 22:41:43 UTC, Steven Schveighoffer
wrote:
On 7/19/22 5:43 PM, Azi Hassan wrote:
Just in case this is a consequence of the XY problem, the
reason why I'm looking for this is to make sure that the code
I wrote did evaluate to what I'm expecting it to. Right now I
do this with an enum assignment followed by static asserts,
but I'd love it for there to be some sort of visual feedback.
Thanks in advance
```d
template printEnum(alias x, string file = __FILE__, size_t line
= __LINE__)
{
enum printEnum = x;
pragma(msg, file, "(", int(line), "): ", printEnum);
}
enum x = printEnum!(iota(1, 5).reduce!"a * b");
```
This will spit out the file, line, and value for the
declaration. Assuming this is useful for your double-checking
you could do this, and then switch it back when you have
verified that it's correct.
-Steve
Nice, a compile time console.log. Thanks a lot, this will come in
handy. I wonder if it can be combined with version(debug) to only
run the pragma line if compiled with -g, this way we can keep the
printEnum! line as it is. Then again, the code would become
polluted by debugging logic