Mercurial > projects > ldc
changeset 1244:e1b0c5c74c58
Resolve all base classes, including interfaces (!) before resolving the class itself.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail.com> |
---|---|
date | Fri, 17 Apr 2009 03:01:43 +0200 |
parents | 9c2dbbdd34f8 |
children | 465a77c904d4 |
files | gen/classes.cpp |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/classes.cpp Fri Apr 17 02:54:16 2009 +0200 +++ b/gen/classes.cpp Fri Apr 17 03:01:43 2009 +0200 @@ -28,8 +28,16 @@ void DtoResolveClass(ClassDeclaration* cd) { // make sure the base classes are processed first - if (cd->baseClass) - cd->baseClass->codegen(Type::sir); + ArrayIter<BaseClass> base_iter(cd->baseclasses); + while (base_iter.more()) + { + BaseClass* bc = base_iter.get(); + if (bc) + { + bc->base->codegen(Type::sir); + } + base_iter.next(); + } if (cd->ir.resolved) return; cd->ir.resolved = true;