This is bug or not? (immutable class containing struct with dtor)

Tejas notrealemail at gmail.com
Fri Dec 17 18:01:03 UTC 2021


On Friday, 17 December 2021 at 17:34:05 UTC, Denis Feklushkin 
wrote:
> On Friday, 17 December 2021 at 17:27:53 UTC, Denis Feklushkin 
> wrote:
>
>>     ~this() {} // Comment out this to fix this compilation  
>> error:
>>     // Error: `immutable` method `serializer_bug.Imm.~this` is
>
> ("serializer_bug" is just name of my local .d file)

I think since `immutable` objects are kept in Read Only Storage, 
you can't call destructors on them since the objects don't get 
erased when `~this` is called, but rather they get assigned their 
`.init` value, which tells the GC that they can be collected.

`immutable class` has nothing to do with it, even the following 
fails to compile:
```d



struct S
{
     ~this() immutable {}
}

void main()
{
     S s = S();
}

Error: `immutable` method `onlineapp.S.~this` is not callable 
using a mutable object
```



More information about the Digitalmars-d-learn mailing list