This is an example from http://d-programming-language.org/function.html, but with changed return types: class Foo { int[] test() { return null; } } class Bar : Foo { int[2] test() { return [1, 2]; } // overrides and is covariant with Foo.test() } // and here's additional test code: void main() { Foo f = new Bar(); auto arr = f.test(); assert(arr.length == 2); } This code compiles but fails on assert. Returned arr.length is 1 and accessing the first element of that array results in access violation. Given that static arrays are implicitly convertible to dynamic arrays, it should work. If not, it at least should not compile.
This no longer compiles on 2.059 Win32: PS E:\DigitalMars\dmd2\samples> rdmd bug.d bug.d(6): Error: function bug.Bar.test of type int[2u]() overrides but is not covariant with bug.Foo.test of type int[]() Failed: "dmd" "-v" "-o-" "bug.d" "-I." PS E:\DigitalMars\dmd2\samples>
Should be closed as FIXED.
Code returns a sound compilation error.