# HG changeset patch # User Christian Kamm # Date 1232883311 -3600 # Node ID f1ed7fe8513899993a3f69a1fc1810a62bd70bae # Parent bd000a7fab18a4add0b5b06adf95869a4cbcfda7 Casts from interface to class generally need to be dynamic. Fixes #189. diff -r bd000a7fab18 -r f1ed7fe85138 gen/classes.cpp --- a/gen/classes.cpp Sat Jan 24 00:33:06 2009 +0100 +++ b/gen/classes.cpp Sun Jan 25 12:35:11 2009 +0100 @@ -1090,11 +1090,11 @@ // interface -> class if (fc->sym->isInterfaceDeclaration()) { Logger::println("interface cast"); - return DtoCastInterfaceToObject(val, _to); + return DtoDynamicCastInterface(val, _to); } // class -> class - static down cast else if (tc->sym->isBaseOf(fc->sym,NULL)) { - Logger::println("static down cast)"); + Logger::println("static down cast"); const LLType* tolltype = DtoType(_to); LLValue* rval = DtoBitCast(val->getRVal(), tolltype); return new DImValue(_to, rval);