On 7/9/21 8:44 PM, russhy wrote:
On Friday, 9 July 2021 at 23:34:25 UTC, Ali Çehreli wrote:
On 7/9/21 4:12 PM, russhy wrote:
>> One way of forcing compile-time evaluation in D is to define
an enum
>> (which means "manifest constant" in that use).
That's all I meant. It was a general comment.
> this is very bad, assert are good because they are one liner,
making it
> 2 line to avoid GC is just poor design, compiler should be
smarter
There must be a misunderstanding. The one-liner does not allocate
either (or @nogc is broken).
https://run.dlang.io/is/HJVSo0
it allocates
That test is possibly showing the wrong thing. You are capturing all
allocations, not just the concatenation.
Change the assert line to:
```d
string s = __FUNCTION__ ~ "This is an error message";
```
And no GC allocations occur. Even without optimizations turned on.
I think it's the throwing/catching of the `Throwable` that is
allocating. But I don't know from where the allocation happens.
-Steve