Actually it's nothing to do with pragma(msg). It's the mangleof which is the problem. Change it to .stringof and problem disappears.
template Templ(T) {
const char [] XXX = Type.mangleof;
alias T Type;
}
void main() {
Templ!(int).Type x; // instantiate
}
====================
Segfaults on DMD2.028.
assert mtype.c(1272) deco
<segfault>
DMD1.042
Assertion failure: 'deco' on line 576 in file 'mtype.c'
abnormal program termination
Comment #3 by clugdbug — 2009-04-20T01:55:26Z
PATCH: DMD2.028 on mytype.c line 1272, replace assert(deco); with:
if (!deco) {
error(loc, ".mangleof forward reference");
return new StringExp(loc, "ERROR", 5, 'c');
}
---
I was surprised to find that in most cases, this error doesn't appear -- seems the compiler absorbs the error and retries in the next semantic pass, and then the code works correctly. In other words, it completely fixes the bug in D2.
From the line number, seems it's a different cause in D1.