diff --git a/dmd/mangle.c b/dmd/mangle.c index af8294ed..54186f57 100644 --- a/dmd/mangle.c +++ b/dmd/mangle.c @@ -225,11 +225,12 @@ char *TemplateInstance::mangle() printf("\n"); #endif id = ident ? ident->toChars() : toChars(); + Dsymbol *par = isnested || isTemplateMixin() ? parent : tempdecl->parent; if (!tempdecl) error("is not defined"); - else if (tempdecl->parent) + else if (par) { - char *p = tempdecl->parent->mangle(); + char *p = par->mangle(); if (p[0] == '_' && p[1] == 'D') p += 2; buf.writestring(p);