From the test suite, test1() in testtypeid.d, if 'typedef' is replaced by 'alias', a runtime segfault occurs. It works if typedef is used instead. import std.stdio; class ABC { } alias ABC DEF; // typedef ABC DEF; is OK. TypeInfo foo() { ABC c; return typeid(DEF); } void main() { TypeInfo ti = foo(); TypeInfo_Typedef td = cast(TypeInfo_Typedef)ti; assert(td); ti = td.base; TypeInfo_Class tc = cast(TypeInfo_Class)ti; assert(tc); printf("%.*s\n", tc.info.name.length, tc.info.name.ptr); assert(tc.info.name == "testtypeid.ABC"); }
The problem is this line: TypeInfo_Typedef td = cast(TypeInfo_Typedef)ti; ti is a TypeInfo_Class. There is no TypeInfo_Alias, and an alias isn't a TypeInfo_Typedef.