[Issue 3292] ICE(todt.c) when using a named mixin with an initializer as template alias parameter

2014-04-18 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=3292

Walter Bright bugzi...@digitalmars.com changed:

   What|Removed |Added

Version|1.047   |D1

--


[Issue 3292] ICE(todt.c) when using a named mixin with an initializer as template alias parameter

2009-10-12 Thread d-bugmail
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: ---


[Issue 3292] ICE(todt.c) when using a named mixin with an initializer as template alias parameter

2009-09-30 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=3292


Don clugd...@yahoo.com.au changed:

   What|Removed |Added

Summary|ICE(todt.c) when using a|ICE(todt.c) when using a
   |named mixin with an |named mixin with an
   |initializer |initializer as template
   ||alias parameter


--- Comment #2 from Don clugd...@yahoo.com.au 2009-09-29 23:52:44 PDT ---
Another variation gives an ICE in optimize.c. Replace void *magic = null; with
void* magic = cast(void*)(0);
Again, it's because no 'type' is NULL.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---