On Saturday, 10 July 2021 at 01:23:26 UTC, Steven Schveighoffer wrote:
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

i think you are right

Reply via email to