immutable struct/class is mutable!

JS js.mdnq at gmail.com
Mon Jul 15 18:46:06 PDT 2013


On Tuesday, 16 July 2013 at 01:24:37 UTC, Jonathan M Davis wrote:
> On Monday, July 15, 2013 21:08:03 Dicebot wrote:
>> On Monday, 15 July 2013 at 18:39:08 UTC, JS wrote:
>> > and immutability doesn't nest. immutable struct A { struct B 
>> > {
>> > }}, struct B is mutable.
>> 
>> What I have meant by "may be intended behavior" is that 
>> immutable
>> qualifier does not attach at aggregate definitions. At all. It 
>> is
>> irrelevant to the fact if B is nested or not.
>
> Yes. Attributes such as immutable or private have no effect on 
> structs or
> classes, just their members. It's a bit weird that way, but 
> that's the way
> that it works.
>
Then we should be able to make a struct immutable itself. e.g., 
immutable immutable(struct) A makes both A and it's members 
immutable. An immutable struct makes nested structs also 
immutable.

>> However, I have just checked and adding a member field to B 
>> also
>> leaves it mutable. And that is really frustrating.
>
> That definitely sounds like a bug.
>
> - Jonathan M Davis



More information about the Digitalmars-d-learn mailing list