Bug 4939 – Some compile-time length tests of array concats

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2010-09-25T08:50:01Z
Last change time
2024-12-13T17:53:30Z
Keywords
accepts-invalid, diagnostic, pull
Assigned to
No Owner
Creator
bearophile_hugs
Moved to GitHub: dmd#18302 →

Comments

Comment #0 by bearophile_hugs — 2010-09-25T08:50:01Z
This is a wrong D2 program, because the lengths of the arrays don't match: // Program #1 void main() { int[2] a1; int[3] a2; int[6] result; result[] = a1 ~ a2; } It compiles with no errors, because a1~a2 produces a dynamic array, despite its length is determined at compile-time. I'd like the compile to catch this bug at compile-time. The situation in Program #1 is not so common, but a little more refined implementation of the same kind of tests may catch at compile-time more common cases, like: // Program #2 void main() { int[] a1 = new int[2]; int[] a2 = new int[3]; int[6] result; result[] = a1 ~ a2; // Error a1 ~= 0; result[] = a1 ~ a2; } // Program #3 void main() { int[] a1 = new int[2]; int[] a2 = new int[3]; int[] result = new int[6]; result[] = a1 ~ a2; // Error }
Comment #1 by k.hara.pg — 2015-06-12T12:11:13Z
https://github.com/D-Programming-Language/dmd/pull/4741 It will make the Program #1 case error. Program #2 and #3 case are not in range, because they needs data flow analysis.
Comment #2 by robert.schadek — 2024-12-13T17:53:30Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18302 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB