Asking a const-related fix [Was: Re: DMD workforce contribution]

Steven Schveighoffer schveiguy at yahoo.com
Mon Nov 7 04:30:08 PST 2011


On Mon, 07 Nov 2011 05:49:52 -0500, bearophile <bearophileHUGS at lycos.com>  
wrote:

> Given how much often I find this problem in D coding, is someone willing  
> and able to write a patch to allow code like this (it's in Bugzilla,  
> with normal priority)?
>
>
> const struct Foo {
>     const int[5] a;
>     const int[] b;
>     const int[int] aa;
>     this(in int n) pure {
>         this.a[] = n; // line 6
>         this.b = new int[5];
>         this.b[0] = n; // line 8
>         this.aa[1] = 2; // line 9
>     }
> }
> void main() {}
>
>
> The latest DMD gives:
>
> test.d(6): Error: slice this.a[] is not mutable
> test.d(8): Error: this.b[0] isn't mutable
> test.d(9): Error: this.aa[1] isn't mutable

Of those, I think the only one which should be fixed is line 6.

Line 8 is invalid, because a const member is only allowed to be  
initialized *once* in a constructor.

Line 9 I think is not conceptually invalid, but you aren't *assigning* aa,  
you are using aa.

I would expect this to be valid:

this.aa = [1:2];

-Steve


More information about the Digitalmars-d mailing list