http://d.puremagic.com/issues/show_bug.cgi?id=3292
Don <clugd...@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #3 from Don <clugd...@yahoo.com.au> 2009-10-12 01:55:37 PDT --- This is happening because in this situation, when TemplateMixin::semantic() is called, semanticRun is already 3. The members get syntax copied: // Copy the syntax trees from the TemplateDeclaration members = Dsymbol::arraySyntaxCopy(tempdecl->members); But this destroys their type info, and then since semanticRun is 3, semantic2 never gets run, hence semantic() never gets called on the members ---> they have no type. I don't think this mixin should be run at all, if it's already done the semantic3 pass. (Note: I have NOT tested this patch against the DMD test suite). PATCH: Line 4457, in template.c, TemplateMixin::semantic(Scope *sc) if (!semanticRun) semanticRun = 1; + if (semanticRun >1) return; ---------------------------- But I'm not sure if this is the correct place to do this check. Should it be being asked to do the semantic at all? It's being called from AliasDeclaration::semantic(), and I'm not sure why: if (aliassym) { if (aliassym->isTemplateInstance()) { aliassym->semantic(sc); // Is this correct?? } return; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------