March 26, 2014
I get the an "undefined identifier destroy" message when trying to compile the following with GDC.

void main()
{
    X x = new X();
    destroy(x);
}

...but it compiles fine in DMD 2.065.0.

I'm using a week-old build of 4.8.2.  Is this not implemented yet?

Mike
March 26, 2014
just checked it with todays GDC git and gcc 4.8.2 — it works ok.
March 26, 2014
On Wednesday, 26 March 2014 at 13:27:03 UTC, ketmar wrote:
> just checked it with todays GDC git and gcc 4.8.2 — it works ok.

Thanks for the reply.

I just rebuilt, and I get the same error.  Are you using the GDC 4.8 branch with GCC 4.8.2?

My build is an ARM Cortex-M cross compiler, but the latest Arch Linux 64 GDC package also fails with the same error.

March 26, 2014
Am Wed, 26 Mar 2014 13:20:48 +0000
schrieb "Mike" <none@none.com>:

> I get the an "undefined identifier destroy" message when trying to compile the following with GDC.
> 
> void main()
> {
>      X x = new X();
>      destroy(x);
> }
> 
> ...but it compiles fine in DMD 2.065.0.
> 
> I'm using a week-old build of 4.8.2.  Is this not implemented yet?
> 
> Mike

Destroy was added to druntime years ago: https://github.com/D-Programming-GDC/GDC/blame/gdc-4.8/libphobos/libdruntime/object_.d#L2257

(It's implemented in the library, so if you want to use it on bare-metal without druntime you'll have to rewrite it ;-)
March 26, 2014
> My build is an ARM Cortex-M cross compiler
that's it. you have to implement it yourself then, 'cause there is no druntime, unfortunately.
March 26, 2014
On Wednesday, 26 March 2014 at 13:44:56 UTC, Johannes Pfau wrote:
> Am Wed, 26 Mar 2014 13:20:48 +0000
> schrieb "Mike" <none@none.com>:
>
>> I get the an "undefined identifier destroy" message when trying to compile the following with GDC.
>> 
>> void main()
>> {
>>      X x = new X();
>>      destroy(x);
>> }
>> 
>> ...but it compiles fine in DMD 2.065.0.
>> 
>> I'm using a week-old build of 4.8.2.  Is this not implemented yet?
>> 
>> Mike
>
> Destroy was added to druntime years ago:
> https://github.com/D-Programming-GDC/GDC/blame/gdc-4.8/libphobos/libdruntime/object_.d#L2257
>
> (It's implemented in the library, so if you want to use it on
> bare-metal without druntime you'll have to rewrite it ;-)

Ah! silly me.  Thank you.  I expected a link error, though, for a missing library function.
March 26, 2014
> Ah! silly me.  Thank you.  I expected a link error, though, for a missing library function.
destroy() is not a built-in, actually, it's just a template, which calls finalizer (see object.di in GDC source). so compiler have no way to know that it should do something special with this identifier.
Top | Discussion index | About this forum | D home