Mercurial > projects > ldc
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 { |