I was playing around with Variant and came across a very annoying problem:

    auto str_arr = Variant(["1", "2", "3"]);
    assert(cast(TypeInfo_Array)str_arr.type(), "This is fine");
    auto int_arr = Variant([1, 2, 3]);
    assert(cast(TypeInfo_Array)int_arr.type(), "This is broken");

While TypeInfo object of string[] is a TypeInfo_Array instance, TypeInfo of int[] isn't. Much to my surprise I found out that TypeInfo of int[] is a mysterious class TypeInfo_Ai and is actually a subclass of TypeInfo_Class:

writefln("typeinfo of int[]: %s", typeid(int[]).classinfo.toString()); writefln("base class of typeinfo int[] %s", typeid(int[]).classinfo.base.classinfo);

    // Outputs
    typeinfo of int[]: TypeInfo_Ai
    base class of typeinfo int[]: TypeInfo_Class

Googling didn't yield any relevant discussions, so I posted it here, although I'm pretty sure someone should have come across the problem in the past. Is this a fundamental issue with the runtime and compiler or is it a bug that can be fixed without breaking too much?

Reply via email to