[Issue 3691] New: compiler 1.055 crashes with some invalid code in is(typeof())

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jan 8 08:23:38 PST 2010


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

           Summary: compiler 1.055 crashes with some invalid code in
                    is(typeof())
           Product: D
           Version: 1.054
          Platform: Other
        OS/Version: Mac OS X
            Status: NEW
          Severity: regression
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: fawzi at gmx.ch


--- Comment #0 from Fawzi Mohamed <fawzi at gmx.ch> 2010-01-08 08:23:36 PST ---
{{{
template RefType(T) {
    static if (is(T == class)) {
        alias T RefType;
    } else {
        alias T* RefType;
    }
}


template UnrefType(T) {
    static if (is(T == class)) {
        alias T UnrefType;
    } else {
        alias typeof(*T) UnrefType;
    }
}

struct P{
    int i;
}


void f(T)(){
    static if(is(typeof(function RefType!(P)(){ return new UnrefType!(P); }))){
        pragma(msg,"pippo");
    }
}

void g(){
    f!(P)();
}
}}}

crashes the compiler (1.055) it seems that unreferencing the structure (which
cannot be done) really upsets the compiler.
This used to work, and basically anything syntactically parseable should be
accepted in is(typeof()) without crashing the compiler (it should just return
false).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list