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;