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
}