Thread overview
Array initialisation vs assignment
Mar 14, 2014
ed
Mar 14, 2014
bearophile
Mar 14, 2014
ed
March 14, 2014
Hi All,

I would expect both blocks of code below to behave in the same manner but they don't.

---
void main()
{
    int[] a = [1,2,3,4];
    int[2][2] b = a; // fine, does an array copy
}
---
void main()
{
    int[] a=[1,2,3,4];
    int[2][2] b;
    b = a; // compile time error
}
---

Is it a bug or by design?
(and if by design why?)

Cheers,
ed
March 14, 2014
ed:

> void main()
> {
>     int[] a = [1,2,3,4];
>     int[2][2] b = a; // fine, does an array copy
> }

> Is it a bug or by design?

That looks like a compiler bug. You are supposed to use a cast to do an assignment like that.

Bye,
bearophile
March 14, 2014
On Friday, 14 March 2014 at 23:10:57 UTC, bearophile wrote:
> ed:
>
>> void main()
>> {
>>    int[] a = [1,2,3,4];
>>    int[2][2] b = a; // fine, does an array copy
>> }
>
>> Is it a bug or by design?
>
> That looks like a compiler bug. You are supposed to use a cast to do an assignment like that.
>
> Bye,
> bearophile

OK, thanks I'll file it.