http://d.puremagic.com/issues/show_bug.cgi?id=3432
Don <clugd...@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch Version|2.036 |1.00 Summary|ICE(e2ir.c): casting local |ICE(e2ir.c): casting |template function |template expression --- Comment #2 from Don <clugd...@yahoo.com.au> 2009-10-22 01:35:53 PDT --- Applies to D1 as well. Doesn't require nested templates. Test case (ICEs even on DMD0.175): --- void fun(T=int)(int w, int z) {} void main() { auto x = cast(void function(int, int))fun; } --- Root cause: Shouldn't be able to cast from void to anything else (except void). This patch also moves some error messages from e2ir into the front-end where they belong. ----- PATCH: expression.c, line 7423 (DMD 2.035, svn rev215): if (!to->equals(e1->type)) { e = op_overload(sc); if (e) { return e->implicitCastTo(sc, to); } + /* Cannot cast from void to anything other than void + */ + if (e1->type == Type::tvoid) { + error("'%s' is void and cannot be cast to %s", e1->toChars(), to->toChars()); + return new ErrorExp(); + } } Type *t1b = e1->type->toBasetype(); Type *tob = to->toBasetype(); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------