--- Comment #3 from Rob Jacques <> 2010-11-02 00:45:42 PDT ---
Having just debugged/patched/filed Issue 5155, I've found that A) that this
test case is a different error and B) they both result from trying to calling
toIR on a statement containing an expression with an __error type (current ty
== 37). In the case of 5155, while debugging I found that detecting the
erroneous ReturnStatement inside the CompoundStatement and eliding it produced
the correct error message (though this might have been as much luck, as
anything else). Looking at the source code, although if(exp) gets tested a fair
amount, if(exp->type->ty == terror) never does, so I'm assuming that the code
that checks for __error inside expressions lives elsewhere. 

Also, here is the stack track from DMD 2.050 for the bug in this report
(Generated using cv2pdb and MSVC). 

    dmd.exe!halt()  Line 231 + 0x2 bytes    C++
     dmd.exe!Type::totym()()  Line 1103    C++
     dmd.exe!IntegerExp::toElem(IRState*)(IRState * irs)  Line 1224 + 0x14
bytes    C++
     dmd.exe!eval_Darray(IRState * irs, Expression * e)  Line 521 + 0xe bytes  
     dmd.exe!CatExp::toElem(IRState*)(IRState * irs)  Line 2111 + 0xe bytes   
     dmd.exe!ReturnStatement::toIR(IRState*)(IRState * irs)  Line 1292 + 0x11
bytes    C++
     dmd.exe!CompoundStatement::toIR(IRState*)(IRState * irs)  Line 1344    C++
     dmd.exe!FuncDeclaration::toObjFile(int )(int multiobj)  Line 914    C++
     dmd.exe!Module::genobjfile(int )(int multiobj)  Line 280    C++
     dmd.exe!main(int argc, char * * argv)  Line 1295    C++
     dmd.exe!_mainCRTStartup()  + 0xa9 bytes    C++

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to