Bug 12365 – Assigning 1D array to 2D array should require cast

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-03-14T16:40:54Z
Last change time
2022-08-22T12:51:41Z
Assigned to
No Owner
Creator
growlercab

Comments

Comment #0 by growlercab — 2014-03-14T16:40:54Z
The code in Ex.1 compiles and runs fine but I think it needs a cast: --- // Ex.1 void main() { int[] a=[1,2,3,4]; int[2][2] b = a; } --- Array assignment in Ex.2 only works with a cast: --- // Ex.2 void main() { int[] a=[1,2,3,4]; int[2][2] b; b = a; // Compile time error cast(int[4])b = a; // works ok } --- I think it should be consistent, preferably with a cast. Thanks, ed
Comment #1 by growlercab — 2014-03-14T16:49:41Z
I'm not sure how to do the cast on initialisation though: --- // Ex.1 void main() { int[] a=[1,2,3,4]; int[2][2] b = a; } --- Would it be: int[2][2] b = cast(int[2][2])a; but it does not match the existing casts required for assignment: cast(int[4])b = a; Maybe just disallow code as per Ex.1 and only allow the cast assignment from Ex.2? Thanks, ed
Comment #2 by razvan.nitu1305 — 2022-08-22T12:51:41Z
The code in Ex1 now yields: test.d(4): Error: cannot implicitly convert expression `a` of type `int[]` to `int[2][]` Closing as fixed.