Mercurial > projects > ldc
diff gen/classes.cpp @ 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 | ff1b4cc2e9be |
children | 7c1b55db4ff3 |
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;