Thread overview
undefined identifier destroy
Mar 26, 2014
Mike
Mar 26, 2014
ketmar
Mar 26, 2014
Mike
Mar 26, 2014
ketmar
Mar 26, 2014
Johannes Pfau
Mar 26, 2014
Mike
Mar 26, 2014
ketmar
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.