BetterC Bug? Intended Behavior? Asking Here As Unsure
Steven Schveighoffer
schveiguy at gmail.com
Tue Jul 7 12:51:27 UTC 2020
On 7/7/20 8:26 AM, Steven Schveighoffer wrote:
> On 7/6/20 5:09 PM, kinke wrote:
>> On Monday, 6 July 2020 at 20:25:11 UTC, Kayomn wrote:
>>> Though, admittedly I'm kind of used to seeing this error message
>>> since it appears any time you try and do something that relies on
>>> type info in betterC, intentionally or not. A notable example is
>>> forgetting to supply an arrange length when declaring a stack array,
>>> or it'll try to create a runtime-allocated array.
>>
>> Similar case here; the 'varargs' end up in a GC-allocated array. I've
>> recently changed `scope` slice params, so that array literal arguments
>> are allocated on the caller's stack instead; so adding `scope` for
>> these variadics *should* probably do the same:
>>
>> void tester(Test test, scope Test[] tests...);
>
> Note that without the initial parameter, or without the destructor, they
> do NOT end up on the heap.
>
> I think this is a bug, and not a "feature". I can't see any reason why
> in those two cases it can construct it on the stack, and in this case it
> cannot.
I should clarify:
1. Removing the destructor, but leaving the initial parameter => stack
allocated
2. Removing the initial parameter, but leaving the destructor => stack
allocated
This is why I think it's at least inconsistent. A bug might be too far,
since the spec clearly gives leeway to implementations to allocate on
the heap.
But I would love to see the spec changed to require stack allocation.
-Steve
More information about the Digitalmars-d-learn
mailing list