[Issue 1083] New: classtype.classinfo.name can't be evaluated in compile-time

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 27 21:30:31 PDT 2007


http://d.puremagic.com/issues/show_bug.cgi?id=1083

           Summary: classtype.classinfo.name can't be evaluated in compile-
                    time
           Product: D
           Version: 1.010
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: davidl at 126.com


template typeadder(T)
{
        const char[] typeadder=T.classinfo.name~"hello";
}

class classa
{
}

void main()
{
        pragma(msg,typeadder!(classa));
}

above should compile

and following throws me insane error message


class MyClass
{
}
class MyClassInLine
{
}

template classcast(T)
{
        const char[] inlinename=T.classinfo.name~"InLine";

        char[] classcastfunc(T.classinfo.name)
        {
                auto ktype= addinline(T.classinfo.name);
                return 
        inlinename~" classcast("~T.classinfo.name~" base)
        {
                "~inlinename~" ret;
                ret = cast("~inlinename~")cast(void*)base;
                ret.classinfo.vtbl="~inlinename~".classinfo.vtbl;
                return ret;
        }"
                ;
        }
        mixin(classcastfunc(T.name));

}

void main()
{
        MyClass a= new MyClass;
        MyClassInLine v;
        v.classinfo.vtbl = MyClass.classinfo.vtbl;
        v= classcast!(MyClass)(a);      
}

error message:
testclassinfo.d(13): Error: no property 'classinfo' for type
'testclassinfo.MyClass'

Yet MyClass should has the property classinfo


-- 



More information about the Digitalmars-d-bugs mailing list