comparison dmd/staticassert.c @ 561:d4e95db0e62b

Introducing template instantiation traces for static asserts and errors within templates.
author Christian Kamm <kamm incasoftware de>
date Sat, 30 Aug 2008 10:30:57 +0200
parents aaade6ded589
children 8026319762be
comparison
equal deleted inserted replaced
559:5d6ef6e6805d 561:d4e95db0e62b
14 #include "dsymbol.h" 14 #include "dsymbol.h"
15 #include "staticassert.h" 15 #include "staticassert.h"
16 #include "expression.h" 16 #include "expression.h"
17 #include "id.h" 17 #include "id.h"
18 #include "hdrgen.h" 18 #include "hdrgen.h"
19 #include "scope.h"
20 #include "template.h"
19 21
20 /********************************* AttribDeclaration ****************************/ 22 /********************************* AttribDeclaration ****************************/
21 23
22 StaticAssert::StaticAssert(Loc loc, Expression *exp, Expression *msg) 24 StaticAssert::StaticAssert(Loc loc, Expression *exp, Expression *msg)
23 : Dsymbol(Id::empty) 25 : Dsymbol(Id::empty)
64 msg->toCBuffer(&buf, &hgs); 66 msg->toCBuffer(&buf, &hgs);
65 error("%s", buf.toChars()); 67 error("%s", buf.toChars());
66 } 68 }
67 else 69 else
68 error("is false"); 70 error("is false");
71 if(sc->tinst)
72 sc->tinst->printInstantiationTrace();
69 if (!global.gag) 73 if (!global.gag)
70 fatal(); 74 fatal();
71 } 75 }
72 else if (!e->isBool(TRUE)) 76 else if (!e->isBool(TRUE))
73 { 77 {