November 18, 2020
The following code
//------------------------
module foo;

static immutable ubyte [2] t = [2, 3];

ubyte g(const ubyte a) {
	return cast (ubyte) (a + 1);
}

void f(const ubyte a, const ubyte b, const int i) {
	ubyte [2] c = a > b ? [a.g(), b.g()] : [b, a];       // compile
	ubyte [2] d = a > b ? [t[i], a] : [a, t[i]];         // compile
	ubyte [2] e = a > b ? [t[i].g(), a.g()] : [a, t[i]]; // does not compile
}
//------------------------

does not compile (with DMD 2.94.1). The error message is:
foo.d(12): Error: incompatible types for ([g(t[cast(ulong)i]), g(a)]) : ([cast(int)a, cast(int)t[cast(ulong)i]]): ubyte[] and int[]

Is this a compiler bug? Or can someone explain me what is wrong with the last line? Why the second array is converted to int[] in this case and not on the above line?