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